/// import immutable = require('immutable') // List tests let list: immutable.List = immutable.List([0, 1, 2, 3, 4, 5]); let list1: immutable.List = immutable.List(list); list = immutable.List.of(0, 1, 2, 3, 4); let bool: boolean = immutable.List.isList(list); list = list.set(0, 1); list = list.delete(0); list = list.remove(0); list = list.insert(0, 1); list = list.clear(); list = list.push(0, 1, 2, 3, 4, 5); list = list.pop(); list = list.unshift(1, 2, 3); list = list.shift(); list = list.update((value: immutable.List) => value); list = list.update(1, (value: number) => value); list = list.update(1, 1, (value: number) => value); list = list.merge(list1, list); list = list.merge([0, 1, 2], [3, 4, 5]); list = list.mergeWith((prev: number, next: number, key: number) => prev, list, list1); list = list.mergeWith((prev: number, next: number, key: number) => prev, [0, 1, 2], [3, 4, 5]); list = list.mergeDeep(list1, list); list = list.mergeDeep([0, 1, 2], [3, 4, 5]); list = list.mergeDeepWith((prev: number, next: number, key: number) => prev, list, list1); list = list.mergeDeepWith((prev: number, next: number, key: number) => prev, [0, 1, 2], [3, 4, 5]); list = list.setSize(5); list = list.setIn([0, 1, 2], 5); list = list.deleteIn([0, 1, 2]); list = list.removeIn([0, 1, 2]); list = list.updateIn([0, 1, 2], value => value); list = list.updateIn([0, 1, 2], 1, value => value); list = list.mergeIn([0, 1, 2], list, list1); list = list.mergeIn([0, 1, 2], [0, 1, 2], [3, 4, 5]); list = list.mergeDeepIn([0, 1, 2], list, list1); list = list.mergeDeepIn([0, 1, 2], [0, 1, 2], [3, 4, 5]); list = list.withMutations((mutable: immutable.List) => mutable); list = list.asMutable(); list = list.asImmutable(); // Collection.Indexed let indexedSeq: immutable.Seq.Indexed = list.toSeq(); // Iterable tests let value: number = list.get(0); value = list.get(0, 1); list = list.interpose(0); list = list.interleave(list, list1); list = list.splice(0, 2, 4, 5, 6); list = list.zip(list1); let indexedIterable: immutable.Iterable.Indexed = list.zipWith( (value: number, other: number) => value + other, list1 ); let indexedIterable1: immutable.Iterable.Indexed = list.zipWith( (value: number, other: number, third: number) => value + other + third, list1, indexedIterable ); indexedIterable = list.zipWith( (value: number, other: number, third: number) => value + other + third, list1, indexedIterable1 ); value = list.indexOf(1); value = list.lastIndexOf(1); value = list.findIndex((value: number, index: number, iter: immutable.List) => true); value = list.findLastIndex((value: number, index: number, iter: immutable.List) => true); value = list.size; bool = list.equals(list1); value = list.hashCode(); bool = list.has(1); bool = list.includes(1); bool = list.contains(1); value = list.first(); value = list.last(); let toArr: number[] = list.toArray(); let toMap: immutable.Map = list.toMap(); let toOrderedMap: immutable.OrderedMap = list.toOrderedMap(); let toSet: immutable.Set = list.toSet(); let toOrderedSet: immutable.OrderedSet = list.toOrderedSet(); list = list.toList(); let toStack: immutable.Stack = list.toStack(); let toKeyedSeq: immutable.Seq.Keyed = list.toKeyedSeq(); indexedSeq = list.toIndexedSeq(); let toSetSeq: immutable.Seq.Set = list.toSetSeq(); let iter: immutable.Iterator = list.keys(); iter = list.values(); let iter1: immutable.Iterator<[number, number]> = list.entries(); indexedSeq = list.keySeq(); indexedSeq = list.valueSeq(); let indexedSeq1: immutable.Seq.Indexed<[number, number]> = list.entrySeq(); let iter2: immutable.Iterable = list.map( (value: number, key: number, iter: immutable.List) => "foo" ) list = list.filterNot((value: number, key: number, iter: immutable.List) => true); list = list.reverse(); list = list.sort((valA: number, valB: number) => 0); list = list.sortBy( (value: number, key: number, iter: immutable.List) => "foo", (valueA: string, valueB: string) => 0 ); let keyedSeq2: immutable.Seq.Keyed> = list.groupBy( (value: number, key: number, iter: immutable.List) => "" ); value = list.forEach((value: number, key: number, iter: immutable.List) => true); list = list.slice(0, 1); list = list.rest(); list = list.butLast(); list = list.skip(0); list = list.skipLast(0); list = list.skipWhile( (value: number, key: number, iter: immutable.List) => true ); list = list.take(2); list = list.takeLast(2); list = list.takeWhile( (value: number, key: number, iter: immutable.List) => true ); list = list.takeUntil( (value: number, key: number, iter: immutable.List) => true ); list = list.concat(list1, 2, 3); list = list.flatten(1); list = list.flatten(true); let str: string = list.reduce( (red: string, value: number, key: number, iter: immutable.List) => red + "bar", "foo" ); str = list.reduceRight( (red: string, value: number, key: number, iter: immutable.List) => red + "bar", "foo" ); bool = list.every( (value: number, key: number, iter: immutable.List) => true ); bool = list.some( (value: number, key: number, iter: immutable.List) => true ); str = list.join(","); bool = list.isEmpty(); value = list.count(); value = list.count( (value: number, key: number, iter: immutable.List) => true ); let keyedSeq3: immutable.Seq.Keyed = list.countBy( (value: number, key: number, iter: immutable.List) => "foo" ); value = list.find( (value: number, key: number, iter: immutable.List) => true, null, 0 ); value = list.findLast( (value: number, key: number, iter: immutable.List) => true, null, 0 ); let tuple: [number, number] = list.findEntry( (value: number, key: number, iter: immutable.List) => true, null, 0 ); tuple = list.findLastEntry( (value: number, key: number, iter: immutable.List) => true, null, 0 ); value = list.findKey( (value: number, key: number, iter: immutable.List) => true, null ); value = list.findLastKey( (value: number, key: number, iter: immutable.List) => true, null ); value = list.keyOf(0); value = list.lastKeyOf(0); value = list.max((valA: number, valB: number) => 0); value = list.maxBy( (value: number, key: number, iter: immutable.List) => "foo", (valueA: string, valueB: string) => 0 ); value = list.min((valA: number, valB: number) => 0); value = list.minBy( (value: number, key: number, iter: immutable.List) => "foo", (valueA: string, valueB: string) => 0 ); bool = list.isSubset(list1); bool = list.isSubset([0, 1, 2]); bool = list.isSuperset(list1); bool = list.isSuperset([0, 1, 2]); // Map tests let map: immutable.Map = immutable.Map(); map = immutable.Map([["foo", 1], ["bar", 2]]); let map1: immutable.Map = immutable.Map(map); map = map.set("baz", 3); map.delete("foo"); map.remove("foo"); map = map.clear(); map = map.update((value: immutable.Map) => value); map = map.update("foo", (value: number) => value); map = map.update("bar", 1, (value: number) => value); map = map.merge(map1, map); map = map.merge({ "foo": 0, "bar": 1}, {"baz": 2}); map = map.mergeWith((prev: number, next: number, key: string) => prev, map, map1); map = map.mergeWith((prev: number, next: number, key: string) => prev,{ "foo": 0, "bar": 1}, {"baz": 2}); map = map.mergeDeep(map1, map); map = map.mergeDeep({ "foo": 0, "bar": 1}, {"baz": 2}); map = map.mergeDeepWith((prev: number, next: number, key: string) => prev, map, map1); map = map.mergeDeepWith((prev: number, next: number, key: string) => prev, { "foo": 0, "bar": 1}, {"baz": 2}); map = map.setIn([0, 1, 2], 5); map = map.deleteIn([0, 1, 2]); map = map.removeIn([0, 1, 2]); map = map.updateIn([0, 1, 2], value => value); map = map.updateIn([0, 1, 2], 1, value => value); map = map.mergeIn([0, 1, 2], map, map1); map = map.mergeIn([0, 1, 2], { "foo": 0, "bar": 1}, {"baz": 2}); map = map.mergeDeepIn([0, 1, 2], map, map1); map = map.mergeDeepIn([0, 1, 2], { "foo": 0, "bar": 1}, {"baz": 2}); map = map.withMutations((mutable: immutable.Map) => mutable); map = map.asMutable(); map = map.asImmutable(); bool = immutable.Map.isMap(map); map = immutable.Map.of("foo", 0, "bar", 1); // OrderedMap tests bool = immutable.OrderedMap.isOrderedMap(toOrderedMap); toOrderedMap = immutable.OrderedMap(toOrderedMap); // Set tests let set: immutable.Set = immutable.Set.of(0, 1, 2, 3); bool = immutable.Set.isSet(set); set = immutable.Set.fromKeys(toMap); let set1: immutable.Set = immutable.Set.fromKeys({ "foo": 1, "bar": 2}); set = immutable.Set(); set = immutable.Set(set); set = set.add(3); set.delete(1); set.remove(2); set = set.clear(); set = set.union(map, list); set = set.union([1, 2, 3], [4, 5, 6]); set = set.merge(map1, list); set = set.merge([1, 2, 3], [4, 5, 6]); set = set.intersect(map1, list); set = set.intersect([1, 2, 3], [4, 5, 6]); set = set.subtract(map1, list); set = set.subtract([1, 2, 3], [4, 5, 6]); set = set.withMutations((mutable: immutable.Set) => mutable); set = set.asMutable(); set = set.asImmutable(); // OrderedSet tests bool = immutable.OrderedSet.isOrderedSet(set); let orderedSet1: immutable.OrderedSet = immutable.OrderedSet.of(0, 1, 2, 3); orderedSet1 = immutable.OrderedSet.fromKeys(toMap); let orderedSet2: immutable.Set = immutable.Set.fromKeys({ "foo": 1, "bar": 2}); // Stack tests let stack: immutable.Stack = immutable.Stack(); bool = immutable.Stack.isStack(stack); stack = immutable.Stack.of(0, 1, 2, 3, 4, 5); stack = immutable.Stack(list); value = stack.peek(); stack = stack.clear(); stack = stack.unshift(0, 1, 2); stack = stack.unshiftAll(list); stack = stack.unshiftAll([1, 2, 3]); stack = stack.shift(); stack = stack.push(1, 2, 3); stack = stack.pushAll(list); stack = stack.pushAll([1, 2, 3]); stack = stack.pop(); stack = stack.withMutations((mutable: immutable.Stack) => mutable); stack = stack.asMutable(); stack = stack.asImmutable(); // Range and Repeat function tests let funcSeqIndexed: immutable.Seq.Indexed = immutable.Range(0, 3, 1); funcSeqIndexed = immutable.Repeat(2, 10); // Seq tests let seq: immutable.Seq = immutable.Seq(); bool = immutable.Seq.isSeq(seq); funcSeqIndexed = immutable.Seq.of(0, 1, 2, 3); seq = immutable.Seq(map); value = seq.size; seq = seq.cacheResult(); // keyed let seqKeyed: immutable.Seq.Keyed = immutable.Seq.Keyed(); seqKeyed = immutable.Seq.Keyed(map); seqKeyed = seqKeyed.toSeq(); // indexed let seqIndexed: immutable.Seq.Indexed = immutable.Seq.Indexed(); seqIndexed = immutable.Seq.Indexed.of(0, 1, 2, 3); seqIndexed = immutable.Seq.Indexed(list); seqIndexed = seqIndexed.toSeq(); // indexed let seqSet: immutable.Seq.Set = immutable.Seq.Set(); seqSet = immutable.Seq.Set.of(0, 1, 2, 3); seqSet = immutable.Seq.Set(list); seqSet = seqSet.toSeq();