@@ -75,6 +75,104 @@ test('closes iterator', async t => {
7575 assert . equal ( closed , true ) ;
7676} ) ;
7777
78+ test ( 'skipped elements' , async t => {
79+ await test ( 'negative integral' , async t => {
80+ assert . throws ( ( ) => {
81+ [ ] . values ( ) . includes ( 0 , - 1 ) ;
82+ } , RangeError ) ;
83+ } ) ;
84+
85+ await test ( 'negative non-integral' , async t => {
86+ assert . throws ( ( ) => {
87+ [ ] . values ( ) . includes ( 0 , - 0.1 ) ;
88+ } , TypeError ) ;
89+ } ) ;
90+
91+ await test ( 'negative infinity' , async t => {
92+ assert . throws ( ( ) => {
93+ [ ] . values ( ) . includes ( 0 , - 2e308 ) ;
94+ } , RangeError ) ;
95+ } ) ;
96+
97+ await test ( 'zero' , async t => {
98+ assert . equal ( [ 4 , 5 , 6 , 7 ] . values ( ) . includes ( 8 , 0 ) , false ) ;
99+ assert . equal ( [ 4 , 5 , 6 , 7 ] . values ( ) . includes ( 7 , 0 ) , true ) ;
100+ assert . equal ( [ 4 , 5 , 6 , 7 ] . values ( ) . includes ( 6 , 0 ) , true ) ;
101+ assert . equal ( [ 4 , 5 , 6 , 7 ] . values ( ) . includes ( 5 , 0 ) , true ) ;
102+ assert . equal ( [ 4 , 5 , 6 , 7 ] . values ( ) . includes ( 4 , 0 ) , true ) ;
103+ assert . equal ( [ 4 , 5 , 6 , 7 ] . values ( ) . includes ( 3 , 0 ) , false ) ;
104+
105+ assert . equal ( [ 4 , 5 , 6 , 7 ] . values ( ) . includes ( 8 , - 0 ) , false ) ;
106+ assert . equal ( [ 4 , 5 , 6 , 7 ] . values ( ) . includes ( 7 , - 0 ) , true ) ;
107+ assert . equal ( [ 4 , 5 , 6 , 7 ] . values ( ) . includes ( 6 , - 0 ) , true ) ;
108+ assert . equal ( [ 4 , 5 , 6 , 7 ] . values ( ) . includes ( 5 , - 0 ) , true ) ;
109+ assert . equal ( [ 4 , 5 , 6 , 7 ] . values ( ) . includes ( 4 , - 0 ) , true ) ;
110+ assert . equal ( [ 4 , 5 , 6 , 7 ] . values ( ) . includes ( 3 , - 0 ) , false ) ;
111+ } ) ;
112+
113+ await test ( 'positive integral' , async t => {
114+ assert . equal ( [ 4 , 5 , 6 , 7 ] . values ( ) . includes ( 4 , 1 ) , false ) ;
115+ assert . equal ( [ 4 , 5 , 6 , 7 ] . values ( ) . includes ( 4 , 2 ) , false ) ;
116+ assert . equal ( [ 4 , 5 , 6 , 7 ] . values ( ) . includes ( 4 , 3 ) , false ) ;
117+ assert . equal ( [ 4 , 5 , 6 , 7 ] . values ( ) . includes ( 4 , 4 ) , false ) ;
118+ assert . equal ( [ 4 , 5 , 6 , 7 ] . values ( ) . includes ( 4 , 5 ) , false ) ;
119+
120+ assert . equal ( [ 4 , 5 , 6 , 7 ] . values ( ) . includes ( 5 , 1 ) , true ) ;
121+ assert . equal ( [ 4 , 5 , 6 , 7 ] . values ( ) . includes ( 5 , 2 ) , false ) ;
122+ assert . equal ( [ 4 , 5 , 6 , 7 ] . values ( ) . includes ( 5 , 3 ) , false ) ;
123+ assert . equal ( [ 4 , 5 , 6 , 7 ] . values ( ) . includes ( 5 , 4 ) , false ) ;
124+ assert . equal ( [ 4 , 5 , 6 , 7 ] . values ( ) . includes ( 5 , 5 ) , false ) ;
125+
126+ assert . equal ( [ 4 , 5 , 6 , 7 ] . values ( ) . includes ( 6 , 1 ) , true ) ;
127+ assert . equal ( [ 4 , 5 , 6 , 7 ] . values ( ) . includes ( 6 , 2 ) , true ) ;
128+ assert . equal ( [ 4 , 5 , 6 , 7 ] . values ( ) . includes ( 6 , 3 ) , false ) ;
129+ assert . equal ( [ 4 , 5 , 6 , 7 ] . values ( ) . includes ( 6 , 4 ) , false ) ;
130+ assert . equal ( [ 4 , 5 , 6 , 7 ] . values ( ) . includes ( 6 , 5 ) , false ) ;
131+
132+ assert . equal ( [ 4 , 5 , 6 , 7 ] . values ( ) . includes ( 7 , 1 ) , true ) ;
133+ assert . equal ( [ 4 , 5 , 6 , 7 ] . values ( ) . includes ( 7 , 2 ) , true ) ;
134+ assert . equal ( [ 4 , 5 , 6 , 7 ] . values ( ) . includes ( 7 , 3 ) , true ) ;
135+ assert . equal ( [ 4 , 5 , 6 , 7 ] . values ( ) . includes ( 7 , 4 ) , false ) ;
136+ assert . equal ( [ 4 , 5 , 6 , 7 ] . values ( ) . includes ( 7 , 5 ) , false ) ;
137+ } ) ;
138+
139+ await test ( 'positive non-integral' , async t => {
140+ assert . throws ( ( ) => {
141+ [ ] . values ( ) . includes ( 0 , 0.1 ) ;
142+ } , TypeError ) ;
143+ } ) ;
144+
145+ await test ( 'positive infinity' , async t => {
146+ let closed = false ;
147+ let i = 0 ;
148+ let iter = {
149+ __proto__ : Iterator . prototype ,
150+ next ( ) {
151+ ++ i ;
152+ if ( i < 1000 ) {
153+ return { value : i , done : false } ;
154+ } else {
155+ closed = true ;
156+ return { value : undefined , done : true } ;
157+ }
158+ } ,
159+ return ( ) {
160+ closed = true ;
161+ return { value : undefined , done : true } ;
162+ } ,
163+ } ;
164+
165+ assert . equal ( iter . includes ( 1 , Infinity ) , false ) ;
166+ assert . equal ( closed , true ) ;
167+ } ) ;
168+
169+ await test ( 'non-numeric' , async t => {
170+ assert . throws ( ( ) => {
171+ [ ] . values ( ) . includes ( 0 , { valueOf ( ) { return 0 ; } } ) ;
172+ } , TypeError ) ;
173+ } ) ;
174+ } ) ;
175+
78176test ( 'name' , async t => {
79177 assert . equal ( Iterator . prototype . includes . name , 'includes' ) ;
80178} ) ;
0 commit comments