You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					549 lines
				
				9.3 KiB
			
		
		
			
		
	
	
					549 lines
				
				9.3 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								'use strict'
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const { test } = require('tap')
							 | 
						||
| 
								 | 
							
								const SemVerStore = require('./index')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('Should create a store', t => {
							 | 
						||
| 
								 | 
							
								  t.plan(1)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const store = SemVerStore()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  store
							 | 
						||
| 
								 | 
							
								    .set('1.2.3', 1)
							 | 
						||
| 
								 | 
							
								    .set('1.2.4', 2)
							 | 
						||
| 
								 | 
							
								    .set('1.3.0', 3)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  t.deepEqual(store.tree, {
							 | 
						||
| 
								 | 
							
								    prefix: 0,
							 | 
						||
| 
								 | 
							
								    store: null,
							 | 
						||
| 
								 | 
							
								    childrenPrefixes: [1],
							 | 
						||
| 
								 | 
							
								    children: {
							 | 
						||
| 
								 | 
							
								      1: {
							 | 
						||
| 
								 | 
							
								        prefix: 1,
							 | 
						||
| 
								 | 
							
								        store: null,
							 | 
						||
| 
								 | 
							
								        childrenPrefixes: [2, 3],
							 | 
						||
| 
								 | 
							
								        children: {
							 | 
						||
| 
								 | 
							
								          2: {
							 | 
						||
| 
								 | 
							
								            prefix: 2,
							 | 
						||
| 
								 | 
							
								            store: null,
							 | 
						||
| 
								 | 
							
								            childrenPrefixes: [3, 4],
							 | 
						||
| 
								 | 
							
								            children: {
							 | 
						||
| 
								 | 
							
								              3: {
							 | 
						||
| 
								 | 
							
								                prefix: 3,
							 | 
						||
| 
								 | 
							
								                store: 1,
							 | 
						||
| 
								 | 
							
								                childrenPrefixes: [],
							 | 
						||
| 
								 | 
							
								                children: null
							 | 
						||
| 
								 | 
							
								              },
							 | 
						||
| 
								 | 
							
								              4: {
							 | 
						||
| 
								 | 
							
								                prefix: 4,
							 | 
						||
| 
								 | 
							
								                store: 2,
							 | 
						||
| 
								 | 
							
								                childrenPrefixes: [],
							 | 
						||
| 
								 | 
							
								                children: null
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          3: {
							 | 
						||
| 
								 | 
							
								            prefix: 3,
							 | 
						||
| 
								 | 
							
								            store: null,
							 | 
						||
| 
								 | 
							
								            childrenPrefixes: [0],
							 | 
						||
| 
								 | 
							
								            children: {
							 | 
						||
| 
								 | 
							
								              0: {
							 | 
						||
| 
								 | 
							
								                prefix: 0,
							 | 
						||
| 
								 | 
							
								                store: 3,
							 | 
						||
| 
								 | 
							
								                childrenPrefixes: [],
							 | 
						||
| 
								 | 
							
								                children: null
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('Should get the leaf', t => {
							 | 
						||
| 
								 | 
							
								  t.plan(1)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const store = SemVerStore()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  store
							 | 
						||
| 
								 | 
							
								    .set('1.2.3', 1)
							 | 
						||
| 
								 | 
							
								    .set('1.2.4', 2)
							 | 
						||
| 
								 | 
							
								    .set('1.3.0', 3)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  t.strictEqual(store.get('1.2.4'), 2)
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('Should get the leaf (wildcard) / 1', t => {
							 | 
						||
| 
								 | 
							
								  t.plan(1)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const store = SemVerStore()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  store
							 | 
						||
| 
								 | 
							
								    .set('1.2.3', 1)
							 | 
						||
| 
								 | 
							
								    .set('1.2.4', 2)
							 | 
						||
| 
								 | 
							
								    .set('1.3.0', 3)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  t.strictEqual(store.get('1.2.x'), 2)
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('Should get the leaf (wildcard) / 2', t => {
							 | 
						||
| 
								 | 
							
								  t.plan(1)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const store = SemVerStore()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  store
							 | 
						||
| 
								 | 
							
								    .set('1.2.3', 1)
							 | 
						||
| 
								 | 
							
								    .set('1.2.4', 2)
							 | 
						||
| 
								 | 
							
								    .set('1.3.0', 3)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  t.strictEqual(store.get('1.x'), 3)
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('Should get the leaf (wildcard) / 3', t => {
							 | 
						||
| 
								 | 
							
								  t.plan(1)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const store = SemVerStore()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  store
							 | 
						||
| 
								 | 
							
								    .set('1.2.3', 1)
							 | 
						||
| 
								 | 
							
								    .set('1.2.4', 2)
							 | 
						||
| 
								 | 
							
								    .set('1.3.0', 3)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  t.strictEqual(store.get('2.2.x'), null)
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('Should get the leaf (wildcard) / 4', t => {
							 | 
						||
| 
								 | 
							
								  t.plan(1)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const store = SemVerStore()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  store
							 | 
						||
| 
								 | 
							
								    .set('1.2.3', 1)
							 | 
						||
| 
								 | 
							
								    .set('1.2.4', 2)
							 | 
						||
| 
								 | 
							
								    .set('1.3.0', 3)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  t.strictEqual(store.get('2.x'), null)
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('Should get the leaf (wildcard) / 5', t => {
							 | 
						||
| 
								 | 
							
								  t.plan(1)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const store = SemVerStore()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  store
							 | 
						||
| 
								 | 
							
								    .set('1.0.0', 1)
							 | 
						||
| 
								 | 
							
								    .set('1.0.1', 2)
							 | 
						||
| 
								 | 
							
								    .set('1.0.2', 3)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  t.strictEqual(store.get('*'), 3)
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('Should get the leaf (wildcard) / 6', t => {
							 | 
						||
| 
								 | 
							
								  t.plan(1)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const store = SemVerStore()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  store
							 | 
						||
| 
								 | 
							
								    .set('1.0.0', 1)
							 | 
						||
| 
								 | 
							
								    .set('1.1.0', 2)
							 | 
						||
| 
								 | 
							
								    .set('1.0.2', 3)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  t.strictEqual(store.get('*'), 2)
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('Should get the leaf (wildcard) / 7', t => {
							 | 
						||
| 
								 | 
							
								  t.plan(1)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const store = SemVerStore()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  store
							 | 
						||
| 
								 | 
							
								    .set('2.0.0', 1)
							 | 
						||
| 
								 | 
							
								    .set('1.1.0', 2)
							 | 
						||
| 
								 | 
							
								    .set('2.0.2', 3)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  t.strictEqual(store.get('*'), 3)
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('Missing patch', t => {
							 | 
						||
| 
								 | 
							
								  t.plan(1)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const store = SemVerStore()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  store
							 | 
						||
| 
								 | 
							
								    .set('1.2.3', 1)
							 | 
						||
| 
								 | 
							
								    .set('1.2.4', 2)
							 | 
						||
| 
								 | 
							
								    .set('1.3.0', 3)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  t.strictEqual(store.get('1.2'), 2)
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('Should get the leaf - 404', t => {
							 | 
						||
| 
								 | 
							
								  t.plan(1)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const store = SemVerStore()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  store
							 | 
						||
| 
								 | 
							
								    .set('1.2.3', 1)
							 | 
						||
| 
								 | 
							
								    .set('1.2.4', 2)
							 | 
						||
| 
								 | 
							
								    .set('1.3.0', 3)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  t.strictEqual(store.get('1.2.5'), null)
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('Should get the leaf (bad formatted semver) / 1', t => {
							 | 
						||
| 
								 | 
							
								  t.plan(1)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const store = SemVerStore()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  store
							 | 
						||
| 
								 | 
							
								    .set('1.2.3', 1)
							 | 
						||
| 
								 | 
							
								    .set('1.2.4', 2)
							 | 
						||
| 
								 | 
							
								    .set('1.3.0', 3)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  t.strictEqual(store.get('1.2.a'), null)
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('Should get the leaf (bad formatted semver) / 2', t => {
							 | 
						||
| 
								 | 
							
								  t.plan(1)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const store = SemVerStore()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  store
							 | 
						||
| 
								 | 
							
								    .set('1.2.3', 1)
							 | 
						||
| 
								 | 
							
								    .set('1.2.4', 2)
							 | 
						||
| 
								 | 
							
								    .set('1.3.0', 3)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  t.strictEqual(store.get('1.a'), null)
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('Big numbers', t => {
							 | 
						||
| 
								 | 
							
								  t.plan(1)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const store = SemVerStore()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  store
							 | 
						||
| 
								 | 
							
								    .set('1.22.34', 1)
							 | 
						||
| 
								 | 
							
								    .set('2.32.456', 2)
							 | 
						||
| 
								 | 
							
								    .set('345.432.34', 3)
							 | 
						||
| 
								 | 
							
								    .set('343.432.36', 4)
							 | 
						||
| 
								 | 
							
								    .set('343.432.342', 5)
							 | 
						||
| 
								 | 
							
								    .set('343.435.367', 6)
							 | 
						||
| 
								 | 
							
								    .set('342.435.34', 7)
							 | 
						||
| 
								 | 
							
								    .set('341.432.34', 8)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  t.strictEqual(store.get('343.x'), 6)
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('Delete a version / 1', t => {
							 | 
						||
| 
								 | 
							
								  t.plan(4)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const store = SemVerStore()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  store
							 | 
						||
| 
								 | 
							
								    .set('1.2.3', 1)
							 | 
						||
| 
								 | 
							
								    .set('1.2.4', 2)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  t.strictEqual(store.get('1.2.3'), 1)
							 | 
						||
| 
								 | 
							
								  t.strictEqual(store.get('1.2.4'), 2)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  store.del('1.2.3')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  t.strictEqual(store.get('1.2.3'), null)
							 | 
						||
| 
								 | 
							
								  t.strictEqual(store.get('1.2.4'), 2)
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('Delete a version / 2', t => {
							 | 
						||
| 
								 | 
							
								  t.plan(2)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const store = SemVerStore()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  store
							 | 
						||
| 
								 | 
							
								    .set('1.2.3', 1)
							 | 
						||
| 
								 | 
							
								    .set('1.2.4', 2)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  t.deepEqual(store.tree, {
							 | 
						||
| 
								 | 
							
								    prefix: 0,
							 | 
						||
| 
								 | 
							
								    store: null,
							 | 
						||
| 
								 | 
							
								    childrenPrefixes: [1],
							 | 
						||
| 
								 | 
							
								    children: {
							 | 
						||
| 
								 | 
							
								      1: {
							 | 
						||
| 
								 | 
							
								        prefix: 1,
							 | 
						||
| 
								 | 
							
								        store: null,
							 | 
						||
| 
								 | 
							
								        childrenPrefixes: [2],
							 | 
						||
| 
								 | 
							
								        children: {
							 | 
						||
| 
								 | 
							
								          2: {
							 | 
						||
| 
								 | 
							
								            prefix: 2,
							 | 
						||
| 
								 | 
							
								            store: null,
							 | 
						||
| 
								 | 
							
								            childrenPrefixes: [3, 4],
							 | 
						||
| 
								 | 
							
								            children: {
							 | 
						||
| 
								 | 
							
								              3: {
							 | 
						||
| 
								 | 
							
								                prefix: 3,
							 | 
						||
| 
								 | 
							
								                store: 1,
							 | 
						||
| 
								 | 
							
								                childrenPrefixes: [],
							 | 
						||
| 
								 | 
							
								                children: null
							 | 
						||
| 
								 | 
							
								              },
							 | 
						||
| 
								 | 
							
								              4: {
							 | 
						||
| 
								 | 
							
								                prefix: 4,
							 | 
						||
| 
								 | 
							
								                store: 2,
							 | 
						||
| 
								 | 
							
								                childrenPrefixes: [],
							 | 
						||
| 
								 | 
							
								                children: null
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  store.del('1.2.3')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  t.deepEqual(store.tree, {
							 | 
						||
| 
								 | 
							
								    prefix: 0,
							 | 
						||
| 
								 | 
							
								    store: null,
							 | 
						||
| 
								 | 
							
								    childrenPrefixes: [1],
							 | 
						||
| 
								 | 
							
								    children: {
							 | 
						||
| 
								 | 
							
								      1: {
							 | 
						||
| 
								 | 
							
								        prefix: 1,
							 | 
						||
| 
								 | 
							
								        store: null,
							 | 
						||
| 
								 | 
							
								        childrenPrefixes: [2],
							 | 
						||
| 
								 | 
							
								        children: {
							 | 
						||
| 
								 | 
							
								          2: {
							 | 
						||
| 
								 | 
							
								            prefix: 2,
							 | 
						||
| 
								 | 
							
								            store: null,
							 | 
						||
| 
								 | 
							
								            childrenPrefixes: [4],
							 | 
						||
| 
								 | 
							
								            children: {
							 | 
						||
| 
								 | 
							
								              4: {
							 | 
						||
| 
								 | 
							
								                prefix: 4,
							 | 
						||
| 
								 | 
							
								                store: 2,
							 | 
						||
| 
								 | 
							
								                childrenPrefixes: [],
							 | 
						||
| 
								 | 
							
								                children: null
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('Delete a version / 3', t => {
							 | 
						||
| 
								 | 
							
								  t.plan(1)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const store = SemVerStore()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  store
							 | 
						||
| 
								 | 
							
								    .set('1.2.3', 1)
							 | 
						||
| 
								 | 
							
								    .del('1.2.3')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  t.deepEqual(store.tree, {
							 | 
						||
| 
								 | 
							
								    prefix: 0,
							 | 
						||
| 
								 | 
							
								    store: null,
							 | 
						||
| 
								 | 
							
								    childrenPrefixes: [],
							 | 
						||
| 
								 | 
							
								    children: {}
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('Delete a version / 4', t => {
							 | 
						||
| 
								 | 
							
								  t.plan(1)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const store = SemVerStore()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  store
							 | 
						||
| 
								 | 
							
								    .set('1.2.3', 1)
							 | 
						||
| 
								 | 
							
								    .set('2.2.3', 2)
							 | 
						||
| 
								 | 
							
								    .del('1.2.3')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  t.deepEqual(store.tree, {
							 | 
						||
| 
								 | 
							
								    prefix: 0,
							 | 
						||
| 
								 | 
							
								    store: null,
							 | 
						||
| 
								 | 
							
								    childrenPrefixes: [2],
							 | 
						||
| 
								 | 
							
								    children: {
							 | 
						||
| 
								 | 
							
								      2: {
							 | 
						||
| 
								 | 
							
								        prefix: 2,
							 | 
						||
| 
								 | 
							
								        store: null,
							 | 
						||
| 
								 | 
							
								        childrenPrefixes: [2],
							 | 
						||
| 
								 | 
							
								        children: {
							 | 
						||
| 
								 | 
							
								          2: {
							 | 
						||
| 
								 | 
							
								            prefix: 2,
							 | 
						||
| 
								 | 
							
								            store: null,
							 | 
						||
| 
								 | 
							
								            childrenPrefixes: [3],
							 | 
						||
| 
								 | 
							
								            children: {
							 | 
						||
| 
								 | 
							
								              3: {
							 | 
						||
| 
								 | 
							
								                prefix: 3,
							 | 
						||
| 
								 | 
							
								                store: 2,
							 | 
						||
| 
								 | 
							
								                childrenPrefixes: [],
							 | 
						||
| 
								 | 
							
								                children: null
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('Delete a version / 5', t => {
							 | 
						||
| 
								 | 
							
								  t.plan(1)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const store = SemVerStore()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  store
							 | 
						||
| 
								 | 
							
								    .set('1.2.3', 1)
							 | 
						||
| 
								 | 
							
								    .set('1.3.3', 2)
							 | 
						||
| 
								 | 
							
								    .set('2.2.3', 3)
							 | 
						||
| 
								 | 
							
								    .del('1.2.x')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  t.deepEqual(store.tree, {
							 | 
						||
| 
								 | 
							
								    prefix: 0,
							 | 
						||
| 
								 | 
							
								    store: null,
							 | 
						||
| 
								 | 
							
								    childrenPrefixes: [1, 2],
							 | 
						||
| 
								 | 
							
								    children: {
							 | 
						||
| 
								 | 
							
								      1: {
							 | 
						||
| 
								 | 
							
								        prefix: 1,
							 | 
						||
| 
								 | 
							
								        store: null,
							 | 
						||
| 
								 | 
							
								        childrenPrefixes: [3],
							 | 
						||
| 
								 | 
							
								        children: {
							 | 
						||
| 
								 | 
							
								          3: {
							 | 
						||
| 
								 | 
							
								            prefix: 3,
							 | 
						||
| 
								 | 
							
								            store: null,
							 | 
						||
| 
								 | 
							
								            childrenPrefixes: [3],
							 | 
						||
| 
								 | 
							
								            children: {
							 | 
						||
| 
								 | 
							
								              3: {
							 | 
						||
| 
								 | 
							
								                prefix: 3,
							 | 
						||
| 
								 | 
							
								                store: 2,
							 | 
						||
| 
								 | 
							
								                childrenPrefixes: [],
							 | 
						||
| 
								 | 
							
								                children: null
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								      2: {
							 | 
						||
| 
								 | 
							
								        prefix: 2,
							 | 
						||
| 
								 | 
							
								        store: null,
							 | 
						||
| 
								 | 
							
								        childrenPrefixes: [2],
							 | 
						||
| 
								 | 
							
								        children: {
							 | 
						||
| 
								 | 
							
								          2: {
							 | 
						||
| 
								 | 
							
								            prefix: 2,
							 | 
						||
| 
								 | 
							
								            store: null,
							 | 
						||
| 
								 | 
							
								            childrenPrefixes: [3],
							 | 
						||
| 
								 | 
							
								            children: {
							 | 
						||
| 
								 | 
							
								              3: {
							 | 
						||
| 
								 | 
							
								                prefix: 3,
							 | 
						||
| 
								 | 
							
								                store: 3,
							 | 
						||
| 
								 | 
							
								                childrenPrefixes: [],
							 | 
						||
| 
								 | 
							
								                children: null
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('Delete a version / 6', t => {
							 | 
						||
| 
								 | 
							
								  t.plan(2)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const store = SemVerStore()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  store
							 | 
						||
| 
								 | 
							
								    .set('1.2.3', 1)
							 | 
						||
| 
								 | 
							
								    .set('1.3.3', 2)
							 | 
						||
| 
								 | 
							
								    .set('2.2.3', 3)
							 | 
						||
| 
								 | 
							
								    .del('1.x')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  t.deepEqual(store.tree, {
							 | 
						||
| 
								 | 
							
								    prefix: 0,
							 | 
						||
| 
								 | 
							
								    store: null,
							 | 
						||
| 
								 | 
							
								    childrenPrefixes: [2],
							 | 
						||
| 
								 | 
							
								    children: {
							 | 
						||
| 
								 | 
							
								      2: {
							 | 
						||
| 
								 | 
							
								        prefix: 2,
							 | 
						||
| 
								 | 
							
								        store: null,
							 | 
						||
| 
								 | 
							
								        childrenPrefixes: [2],
							 | 
						||
| 
								 | 
							
								        children: {
							 | 
						||
| 
								 | 
							
								          2: {
							 | 
						||
| 
								 | 
							
								            prefix: 2,
							 | 
						||
| 
								 | 
							
								            store: null,
							 | 
						||
| 
								 | 
							
								            childrenPrefixes: [3],
							 | 
						||
| 
								 | 
							
								            children: {
							 | 
						||
| 
								 | 
							
								              3: {
							 | 
						||
| 
								 | 
							
								                prefix: 3,
							 | 
						||
| 
								 | 
							
								                store: 3,
							 | 
						||
| 
								 | 
							
								                childrenPrefixes: [],
							 | 
						||
| 
								 | 
							
								                children: null
							 | 
						||
| 
								 | 
							
								              }
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  store.del('2.x')
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  t.deepEqual(store.tree, {
							 | 
						||
| 
								 | 
							
								    prefix: 0,
							 | 
						||
| 
								 | 
							
								    store: null,
							 | 
						||
| 
								 | 
							
								    childrenPrefixes: [],
							 | 
						||
| 
								 | 
							
								    children: {}
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('Empty store', t => {
							 | 
						||
| 
								 | 
							
								  t.plan(1)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const store = SemVerStore()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  store
							 | 
						||
| 
								 | 
							
								    .set('1.2.3', 1)
							 | 
						||
| 
								 | 
							
								    .set('1.3.3', 2)
							 | 
						||
| 
								 | 
							
								    .set('2.2.3', 3)
							 | 
						||
| 
								 | 
							
								    .empty()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  t.deepEqual(store.tree, {
							 | 
						||
| 
								 | 
							
								    prefix: 0,
							 | 
						||
| 
								 | 
							
								    store: null,
							 | 
						||
| 
								 | 
							
								    childrenPrefixes: [],
							 | 
						||
| 
								 | 
							
								    children: null
							 | 
						||
| 
								 | 
							
								  })
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('get with bad type', t => {
							 | 
						||
| 
								 | 
							
								  t.plan(1)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const store = SemVerStore()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  store.set('1.2.3', 1)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  t.strictEqual(store.get(5), null)
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('set with bad type', t => {
							 | 
						||
| 
								 | 
							
								  t.plan(1)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const store = SemVerStore()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  try {
							 | 
						||
| 
								 | 
							
								    store.set(1, 1)
							 | 
						||
| 
								 | 
							
								    t.fail('Should fail')
							 | 
						||
| 
								 | 
							
								  } catch (err) {
							 | 
						||
| 
								 | 
							
								    t.is(err.message, 'Version should be a string')
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								})
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								test('del with bad type', t => {
							 | 
						||
| 
								 | 
							
								  t.plan(1)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const store = SemVerStore()
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  try {
							 | 
						||
| 
								 | 
							
								    store.del(1)
							 | 
						||
| 
								 | 
							
								    t.fail('Should fail')
							 | 
						||
| 
								 | 
							
								  } catch (err) {
							 | 
						||
| 
								 | 
							
								    t.is(err.message, 'Version should be a string')
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								})
							 |