mirror of
https://github.com/tc39/test262.git
synced 2025-07-27 07:54:41 +02:00
Add tests for ListFormat StringListFromIterable ( iterable ) (#2380)
* Add tests for StringListFromIterable * add case throw TypeError * add test for formatToParts * add test for formatToParts
This commit is contained in:
parent
71a70fc117
commit
2715f312db
48
test/intl402/ListFormat/prototype/format/iterable-invalid.js
vendored
Normal file
48
test/intl402/ListFormat/prototype/format/iterable-invalid.js
vendored
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
// Copyright 2019 Google Inc. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
|
||||||
|
/*---
|
||||||
|
esid: sec-Intl.ListFormat.prototype.format
|
||||||
|
description: Checks the behavior of Abstract Operation StringListFromIterable
|
||||||
|
called by Intl.ListFormat.prototype.format().
|
||||||
|
info: |
|
||||||
|
StringListFromIterable
|
||||||
|
1. If iterable is undefined, then
|
||||||
|
a. Return a new empty List.
|
||||||
|
2. Let iteratorRecord be ? GetIterator(iterable).
|
||||||
|
3. Let list be a new empty List.
|
||||||
|
4. Let next be true.
|
||||||
|
5. Repeat, while next is not false
|
||||||
|
a. Set next to ? IteratorStep(iteratorRecord).
|
||||||
|
b. If next is not false, then
|
||||||
|
i. Let nextValue be ? IteratorValue(next).
|
||||||
|
ii. If Type(nextValue) is not String, then
|
||||||
|
1. Let error be ThrowCompletion(a newly created TypeError object).
|
||||||
|
2. Return ? IteratorClose(iteratorRecord, error).
|
||||||
|
iii. Append nextValue to the end of the List list.
|
||||||
|
6. Return list.
|
||||||
|
features: [Intl.ListFormat]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
let lf = new Intl.ListFormat();
|
||||||
|
// Test the failure case.
|
||||||
|
let iterable_of_strings_and_number = {
|
||||||
|
[Symbol.iterator]() {
|
||||||
|
return this;
|
||||||
|
},
|
||||||
|
count: 0,
|
||||||
|
next() {
|
||||||
|
this.count++;
|
||||||
|
if (this.count == 3) {
|
||||||
|
return {done:false, value: 3};
|
||||||
|
}
|
||||||
|
if (this.count < 5) {
|
||||||
|
return {done: false, value: String(this.count)};
|
||||||
|
}
|
||||||
|
return {done:true}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
assert.throws(TypeError,
|
||||||
|
()=> {lf.format(iterable_of_strings_and_number)},
|
||||||
|
"Iterable yielded 3 which is not a string");
|
||||||
|
assert.sameValue(iterable_of_strings_and_number.count, 3);
|
44
test/intl402/ListFormat/prototype/format/iterable.js
vendored
Normal file
44
test/intl402/ListFormat/prototype/format/iterable.js
vendored
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
// Copyright 2019 Google Inc. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
|
||||||
|
/*---
|
||||||
|
esid: sec-Intl.ListFormat.prototype.format
|
||||||
|
description: Checks the behavior of Abstract Operation StringListFromIterable
|
||||||
|
called by Intl.ListFormat.prototype.format().
|
||||||
|
info: |
|
||||||
|
StringListFromIterable
|
||||||
|
1. If iterable is undefined, then
|
||||||
|
a. Return a new empty List.
|
||||||
|
2. Let iteratorRecord be ? GetIterator(iterable).
|
||||||
|
3. Let list be a new empty List.
|
||||||
|
4. Let next be true.
|
||||||
|
5. Repeat, while next is not false
|
||||||
|
a. Set next to ? IteratorStep(iteratorRecord).
|
||||||
|
b. If next is not false, then
|
||||||
|
i. Let nextValue be ? IteratorValue(next).
|
||||||
|
ii. If Type(nextValue) is not String, then
|
||||||
|
1. Let error be ThrowCompletion(a newly created TypeError object).
|
||||||
|
2. Return ? IteratorClose(iteratorRecord, error).
|
||||||
|
iii. Append nextValue to the end of the List list.
|
||||||
|
6. Return list.
|
||||||
|
features: [Intl.ListFormat]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
let lf = new Intl.ListFormat();
|
||||||
|
|
||||||
|
// Test the success case.
|
||||||
|
let iterable_of_strings = {
|
||||||
|
[Symbol.iterator]() {
|
||||||
|
return this;
|
||||||
|
},
|
||||||
|
count: 0,
|
||||||
|
next() {
|
||||||
|
this.count++
|
||||||
|
if (this.count < 4) {
|
||||||
|
return {done: false, value: String(this.count)};
|
||||||
|
}
|
||||||
|
return {done:true}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
lf.format(iterable_of_strings);
|
||||||
|
assert.sameValue(iterable_of_strings.count, 4);
|
48
test/intl402/ListFormat/prototype/formatToParts/iterable-invalid.js
vendored
Normal file
48
test/intl402/ListFormat/prototype/formatToParts/iterable-invalid.js
vendored
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
// Copyright 2019 Google Inc. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
|
||||||
|
/*---
|
||||||
|
esid: sec-Intl.ListFormat.prototype.formatToParts
|
||||||
|
description: Checks the behavior of Abstract Operation StringListFromIterable
|
||||||
|
called by Intl.ListFormat.prototype.formatToParts().
|
||||||
|
info: |
|
||||||
|
StringListFromIterable
|
||||||
|
1. If iterable is undefined, then
|
||||||
|
a. Return a new empty List.
|
||||||
|
2. Let iteratorRecord be ? GetIterator(iterable).
|
||||||
|
3. Let list be a new empty List.
|
||||||
|
4. Let next be true.
|
||||||
|
5. Repeat, while next is not false
|
||||||
|
a. Set next to ? IteratorStep(iteratorRecord).
|
||||||
|
b. If next is not false, then
|
||||||
|
i. Let nextValue be ? IteratorValue(next).
|
||||||
|
ii. If Type(nextValue) is not String, then
|
||||||
|
1. Let error be ThrowCompletion(a newly created TypeError object).
|
||||||
|
2. Return ? IteratorClose(iteratorRecord, error).
|
||||||
|
iii. Append nextValue to the end of the List list.
|
||||||
|
6. Return list.
|
||||||
|
features: [Intl.ListFormat]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
let lf = new Intl.ListFormat();
|
||||||
|
// Test the failure case.
|
||||||
|
let iterable_of_strings_and_number = {
|
||||||
|
[Symbol.iterator]() {
|
||||||
|
return this;
|
||||||
|
},
|
||||||
|
count: 0,
|
||||||
|
next() {
|
||||||
|
this.count++;
|
||||||
|
if (this.count == 3) {
|
||||||
|
return {done:false, value: 3};
|
||||||
|
}
|
||||||
|
if (this.count < 5) {
|
||||||
|
return {done: false, value: String(this.count)};
|
||||||
|
}
|
||||||
|
return {done:true}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
assert.throws(TypeError,
|
||||||
|
()=> {lf.formatToParts(iterable_of_strings_and_number)},
|
||||||
|
"Iterable yielded 3 which is not a string");
|
||||||
|
assert.sameValue(iterable_of_strings_and_number.count, 3);
|
44
test/intl402/ListFormat/prototype/formatToParts/iterable.js
vendored
Normal file
44
test/intl402/ListFormat/prototype/formatToParts/iterable.js
vendored
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
// Copyright 2019 Google Inc. All rights reserved.
|
||||||
|
// This code is governed by the BSD license found in the LICENSE file.
|
||||||
|
|
||||||
|
/*---
|
||||||
|
esid: sec-Intl.ListFormat.prototype.formatToParts
|
||||||
|
description: Checks the behavior of Abstract Operation StringListFromIterable
|
||||||
|
called by Intl.ListFormat.prototype.formatToParts().
|
||||||
|
info: |
|
||||||
|
StringListFromIterable
|
||||||
|
1. If iterable is undefined, then
|
||||||
|
a. Return a new empty List.
|
||||||
|
2. Let iteratorRecord be ? GetIterator(iterable).
|
||||||
|
3. Let list be a new empty List.
|
||||||
|
4. Let next be true.
|
||||||
|
5. Repeat, while next is not false
|
||||||
|
a. Set next to ? IteratorStep(iteratorRecord).
|
||||||
|
b. If next is not false, then
|
||||||
|
i. Let nextValue be ? IteratorValue(next).
|
||||||
|
ii. If Type(nextValue) is not String, then
|
||||||
|
1. Let error be ThrowCompletion(a newly created TypeError object).
|
||||||
|
2. Return ? IteratorClose(iteratorRecord, error).
|
||||||
|
iii. Append nextValue to the end of the List list.
|
||||||
|
6. Return list.
|
||||||
|
features: [Intl.ListFormat]
|
||||||
|
---*/
|
||||||
|
|
||||||
|
let lf = new Intl.ListFormat();
|
||||||
|
|
||||||
|
// Test the success case.
|
||||||
|
let iterable_of_strings = {
|
||||||
|
[Symbol.iterator]() {
|
||||||
|
return this;
|
||||||
|
},
|
||||||
|
count: 0,
|
||||||
|
next() {
|
||||||
|
this.count++
|
||||||
|
if (this.count < 4) {
|
||||||
|
return {done: false, value: String(this.count)};
|
||||||
|
}
|
||||||
|
return {done:true}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
lf.formatToParts(iterable_of_strings);
|
||||||
|
assert.sameValue(iterable_of_strings.count, 4);
|
Loading…
x
Reference in New Issue
Block a user