@@ -40,3 +40,112 @@ describe('unique', function () {
40
40
} ) ;
41
41
} ) ;
42
42
43
+ describe ( 'unique.immutable' , function ( ) {
44
+ it ( 'should throw an error if the value passed is not an array:' , function ( ) {
45
+ ( function ( ) {
46
+ unique . immutable ( 'a' , 'b' , 'c' ) ;
47
+ } ) . should . throw ( 'array-unique expects an array.' ) ;
48
+ } ) ;
49
+
50
+ it ( 'should return an array with unique values without modifying the input:' , function ( ) {
51
+ ( function ( ) {
52
+ var original = [ 'a' , 'b' , 'c' , 'a' , 'b' , 'd' ] ;
53
+ var before = [ 'a' , 'b' , 'c' , 'a' , 'b' , 'd' ] ;
54
+ var expected = [ 'a' , 'b' , 'c' , 'd' ] ;
55
+
56
+ unique . immutable ( before ) . should . eql ( expected ) ;
57
+ before . should . eql ( original ) ;
58
+ } ) ( ) ;
59
+
60
+ ( function ( ) {
61
+ var original = [ 'a' , 'b' , 'c' , 'a' , 'b' , 'a' , 'b' , 'c' , 'b' , 'f' , 'a' , 'b' ] ;
62
+ var before = [ 'a' , 'b' , 'c' , 'a' , 'b' , 'a' , 'b' , 'c' , 'b' , 'f' , 'a' , 'b' ] ;
63
+ var expected = [ 'a' , 'b' , 'c' , 'f' ] ;
64
+
65
+ unique . immutable ( before ) . should . eql ( expected ) ;
66
+ before . should . eql ( original ) ;
67
+ } ) ( ) ;
68
+
69
+ ( function ( ) {
70
+ var original = [ 'a' , 'b' , 'c' , 'a' , 'b' , 'a' , 'b' , 'b' , 'f' , 'a' , 'b' , 'x' , 'y' , 'z' , 'a' , 'b' , 'a' , 'b' , 'a' , 'b' , 'b' , 'f' , 'a' , 'b' , 'x' , 'y' , 'z' , 'a' , 'b' , 'a' , 'b' , 'a' , 'b' , 'b' , 'f' , 'a' , 'b' , 'x' , 'y' , 'z' , 'a' , 'b' , 'a' , 'b' , 'a' , 'b' , 'b' , 'f' , 'a' , 'b' , 'x' , 'y' , 'z' , 'a' , 'b' , 'a' , 'b' , 'a' , 'b' , 'b' , 'f' , 'a' , 'b' , 'x' , 'y' , 'z' , 'a' , 'b' , 'a' , 'b' , 'a' , 'b' , 'b' , 'f' , 'a' , 'b' , 'x' , 'y' , 'z' , 'a' , 'b' , 'a' , 'b' , 'a' , 'b' , 'b' , 'f' , 'a' , 'b' , 'x' , 'y' , 'z' , 'a' , 'b' , 'a' , 'b' , 'a' , 'b' , 'b' , 'f' , 'a' , 'b' , 'x' , 'y' , 'z' , 'a' , 'b' , 'a' , 'b' , 'a' , 'b' , 'b' , 'f' , 'a' , 'b' , 'x' , 'y' , 'z' , 'a' , 'b' , 'a' , 'b' , 'a' , 'b' , 'b' , 'f' , 'a' , 'b' , 'x' , 'y' , 'z' , 'a' , 'b' , 'a' , 'b' , 'a' , 'b' , 'b' , 'f' , 'a' , 'b' , 'x' , 'y' , 'z' , 'a' , 'b' ]
71
+ var before = [ 'a' , 'b' , 'c' , 'a' , 'b' , 'a' , 'b' , 'b' , 'f' , 'a' , 'b' , 'x' , 'y' , 'z' , 'a' , 'b' , 'a' , 'b' , 'a' , 'b' , 'b' , 'f' , 'a' , 'b' , 'x' , 'y' , 'z' , 'a' , 'b' , 'a' , 'b' , 'a' , 'b' , 'b' , 'f' , 'a' , 'b' , 'x' , 'y' , 'z' , 'a' , 'b' , 'a' , 'b' , 'a' , 'b' , 'b' , 'f' , 'a' , 'b' , 'x' , 'y' , 'z' , 'a' , 'b' , 'a' , 'b' , 'a' , 'b' , 'b' , 'f' , 'a' , 'b' , 'x' , 'y' , 'z' , 'a' , 'b' , 'a' , 'b' , 'a' , 'b' , 'b' , 'f' , 'a' , 'b' , 'x' , 'y' , 'z' , 'a' , 'b' , 'a' , 'b' , 'a' , 'b' , 'b' , 'f' , 'a' , 'b' , 'x' , 'y' , 'z' , 'a' , 'b' , 'a' , 'b' , 'a' , 'b' , 'b' , 'f' , 'a' , 'b' , 'x' , 'y' , 'z' , 'a' , 'b' , 'a' , 'b' , 'a' , 'b' , 'b' , 'f' , 'a' , 'b' , 'x' , 'y' , 'z' , 'a' , 'b' , 'a' , 'b' , 'a' , 'b' , 'b' , 'f' , 'a' , 'b' , 'x' , 'y' , 'z' , 'a' , 'b' , 'a' , 'b' , 'a' , 'b' , 'b' , 'f' , 'a' , 'b' , 'x' , 'y' , 'z' , 'a' , 'b' ]
72
+ var expected = [ 'a' , 'b' , 'c' , 'f' , 'x' , 'y' , 'z' ] ;
73
+ unique . immutable ( before ) . should . eql ( expected ) ;
74
+ before . should . eql ( original ) ;
75
+ } ) ( ) ;
76
+
77
+ ( function ( ) {
78
+ var original = [
79
+ 'foo/bar/baz/quux/fez/test/fixtures' ,
80
+ 'foo/bar/baz/quux/fez/test/fixtures' ,
81
+ 'foo/bar/baz/quux/fez/test/fixtures/a.js' ,
82
+ 'foo/bar/baz/quux/fez/test/fixtures' ,
83
+ 'foo/bar/baz/quux/fez/test/fixtures' ,
84
+ 'foo/bar/baz/quux/fez/test/fixtures/b.js' ,
85
+ 'foo/bar/baz/quux/fez/test/fixtures/b.js' ,
86
+ 'foo/bar/baz/quux/fez/test/fixtures' ,
87
+ 'foo/bar/baz/quux/fez/test/fixtures' ,
88
+ 'foo/bar/baz/quux/fez/test/fixtures/a.js' ,
89
+ 'foo/bar/baz/quux/fez/test/fixtures/j.js' ,
90
+ 'foo/bar/baz/quux/fez/test/fixtures/z.js' ,
91
+ 'foo/bar/baz/quux/fez/test/fixtures/c.js' ,
92
+ 'foo/bar/baz/quux/fez/test/fixtures/d.js' ,
93
+ 'foo/bar/baz/quux/fez/test/fixtures' ,
94
+ 'foo/bar/baz/quux/fez/test/fixtures/a.js' ,
95
+ 'foo/bar/baz/quux/fez/test/fixtures' ,
96
+ 'foo/bar/baz/quux/fez/test/fixtures/h.js' ,
97
+ 'foo/bar/baz/quux/fez/test/fixtures/i.js' ,
98
+ 'foo/bar/baz/quux/fez/test/fixtures/j.js' ,
99
+ 'foo/bar/baz/quux/fez/test/fixtures/k.js' ,
100
+ 'foo/bar/baz/quux/fez/test/fixtures/l.js' ,
101
+ 'foo/bar/baz/quux/fez/test/fixtures/m.js' ,
102
+ 'foo/bar/baz/quux/fez/test/fixtures' ,
103
+ 'foo/bar/baz/quux/fez/test/fixtures/a.js'
104
+ ] ;
105
+ var before = [
106
+ 'foo/bar/baz/quux/fez/test/fixtures' ,
107
+ 'foo/bar/baz/quux/fez/test/fixtures' ,
108
+ 'foo/bar/baz/quux/fez/test/fixtures/a.js' ,
109
+ 'foo/bar/baz/quux/fez/test/fixtures' ,
110
+ 'foo/bar/baz/quux/fez/test/fixtures' ,
111
+ 'foo/bar/baz/quux/fez/test/fixtures/b.js' ,
112
+ 'foo/bar/baz/quux/fez/test/fixtures/b.js' ,
113
+ 'foo/bar/baz/quux/fez/test/fixtures' ,
114
+ 'foo/bar/baz/quux/fez/test/fixtures' ,
115
+ 'foo/bar/baz/quux/fez/test/fixtures/a.js' ,
116
+ 'foo/bar/baz/quux/fez/test/fixtures/j.js' ,
117
+ 'foo/bar/baz/quux/fez/test/fixtures/z.js' ,
118
+ 'foo/bar/baz/quux/fez/test/fixtures/c.js' ,
119
+ 'foo/bar/baz/quux/fez/test/fixtures/d.js' ,
120
+ 'foo/bar/baz/quux/fez/test/fixtures' ,
121
+ 'foo/bar/baz/quux/fez/test/fixtures/a.js' ,
122
+ 'foo/bar/baz/quux/fez/test/fixtures' ,
123
+ 'foo/bar/baz/quux/fez/test/fixtures/h.js' ,
124
+ 'foo/bar/baz/quux/fez/test/fixtures/i.js' ,
125
+ 'foo/bar/baz/quux/fez/test/fixtures/j.js' ,
126
+ 'foo/bar/baz/quux/fez/test/fixtures/k.js' ,
127
+ 'foo/bar/baz/quux/fez/test/fixtures/l.js' ,
128
+ 'foo/bar/baz/quux/fez/test/fixtures/m.js' ,
129
+ 'foo/bar/baz/quux/fez/test/fixtures' ,
130
+ 'foo/bar/baz/quux/fez/test/fixtures/a.js'
131
+ ] ;
132
+ var expected = [
133
+ 'foo/bar/baz/quux/fez/test/fixtures' ,
134
+ 'foo/bar/baz/quux/fez/test/fixtures/a.js' ,
135
+ 'foo/bar/baz/quux/fez/test/fixtures/b.js' ,
136
+ 'foo/bar/baz/quux/fez/test/fixtures/j.js' ,
137
+ 'foo/bar/baz/quux/fez/test/fixtures/z.js' ,
138
+ 'foo/bar/baz/quux/fez/test/fixtures/c.js' ,
139
+ 'foo/bar/baz/quux/fez/test/fixtures/d.js' ,
140
+ 'foo/bar/baz/quux/fez/test/fixtures/h.js' ,
141
+ 'foo/bar/baz/quux/fez/test/fixtures/i.js' ,
142
+ 'foo/bar/baz/quux/fez/test/fixtures/k.js' ,
143
+ 'foo/bar/baz/quux/fez/test/fixtures/l.js' ,
144
+ 'foo/bar/baz/quux/fez/test/fixtures/m.js'
145
+ ] ;
146
+
147
+ unique . immutable ( before ) . should . eql ( expected ) ;
148
+ before . should . eql ( original ) ;
149
+ } ) ( ) ;
150
+ } ) ;
151
+ } ) ;
0 commit comments