Skip to content

Commit 7ef8886

Browse files
committed
add some test
1 parent 72fc51c commit 7ef8886

File tree

7 files changed

+238
-0
lines changed

7 files changed

+238
-0
lines changed

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ npm test
3333
8. [Symbol](./test/symbol.js)
3434
9. [Set and Map](./test/setAndMap.js)
3535
10. [proxy](./test/proxy.js)
36+
11. [reflect](./test/reflect.js)
37+
12. [Promise](./test/promise.js)
38+
13. [Iterator](./test/iterator.js)
39+
14. [Generator](./test/generator.js)
3640

3741

3842
Babel

test/another.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
another

test/generator.js

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
import {expect,assert} from 'chai';
2+
import 'babel-polyfill';
3+
describe("test generator",function(){
4+
it('initialize genartor',function(){
5+
function* generator(){
6+
yield 1;
7+
yield 2;
8+
yield 3;
9+
}
10+
let testGenerator = generator();
11+
expect(testGenerator instanceof generator).to.equal(true);
12+
});
13+
it('iterator is implied in generator instance',function(){
14+
function* generator(){
15+
yield 1;
16+
yield 2;
17+
yield 3;
18+
}
19+
let testGenerator = generator();
20+
let testObject = [...testGenerator];
21+
expect(testObject).to.deep.equal([1,2,3]);
22+
});
23+
it('test next method',function(){
24+
let testArray = [];
25+
function* generator(){
26+
yield testArray.push(1);
27+
yield testArray.push(2);
28+
yield testArray.push(3);
29+
}
30+
let testGenerator = generator();
31+
testGenerator.next();
32+
expect(testArray).to.deep.equal([1]);
33+
});
34+
it('next method wiht param',function(){// the param will become the yield value before one
35+
let testArray = [];
36+
function* generator(){
37+
let number = yield 1;
38+
testArray.push(number);
39+
}
40+
let testGenerator = generator();
41+
testGenerator.next();
42+
testGenerator.next(1);
43+
expect(testArray).to.deep.equal([1]);
44+
});
45+
it('Generator.prototype.throw',function(){
46+
function* generator(){
47+
try{
48+
yield;
49+
} catch(error){//catch error in the generator
50+
expect(error).to.equal('test error');
51+
}
52+
53+
}
54+
let testGenerator = generator();
55+
testGenerator.next();
56+
testGenerator.throw('test error');//you can throw an error by yourself;
57+
// when you thorw an error,the Generator.prototype.next will be invoked at the same time
58+
// the process above like this; g.next() ==> g.throw() ==> ( g.next() ===> catch error in generator )
59+
});
60+
it('Generator,prototype.return',function(){ //when the return value was invoked ,the return value will be {value:undefied,done:false}
61+
function* generator(){
62+
yield 1;
63+
yield 2;
64+
yield 3;
65+
}
66+
let testGenerator = generator();
67+
testGenerator.next();
68+
expect(testGenerator.return()).to.deep.equal({value:undefined,done:true});
69+
});
70+
it('yield* ',function(){//use yield* syntax you can call another generator function
71+
function* firstGenerator(){
72+
yield 1;
73+
yield 2;
74+
yield 3;
75+
yield 4;
76+
}
77+
function* secondGenerator(){
78+
yield* firstGenerator();
79+
yield 5;
80+
yield 6;
81+
}
82+
let testGenerator = secondGenerator();
83+
expect(testGenerator.next()).to.deep.equal({value:1,done:false});
84+
});
85+
});

test/iterator.js

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
import { expect, assert } from 'chai';
2+
import 'babel-polyfill';
3+
describe('test iterator', function() {//iterator on object
4+
it('object iterator', function() {
5+
let testObject = {
6+
data: [1, 2, 3],
7+
[Symbol.iterator]: function() {
8+
let current = 0;
9+
let self = this;
10+
return {//return an object contains next method
11+
next: function() {
12+
if(current < self.data.length) {
13+
return { value: self.data[current++], done: false };
14+
} else {
15+
return { value: undefined, done: true }
16+
}
17+
}
18+
};
19+
}
20+
};
21+
let testArray = [];
22+
for(let value of testObject) {
23+
testArray.push(value);
24+
}
25+
expect(testArray).to.deep.equal([1,2,3]);
26+
});
27+
it('constructor iterator',function(){
28+
function TestIterator(start,stop){ //set iterator to a constructor
29+
this.value = start;
30+
this.stop = stop;
31+
this[Symbol.iterator] = function(){
32+
return this;
33+
};
34+
let self = this;
35+
this.next = (function(){
36+
return function(){
37+
if(self.value <= self.stop){
38+
let result = {value:self.value,done:false};
39+
self.value++;
40+
return result;
41+
} else {
42+
return {value:undefined,done:true};
43+
}
44+
}
45+
})();
46+
}
47+
let testObject = new TestIterator(1,3);
48+
let testArray = [];
49+
for(let value of testObject){
50+
testArray.push(value);
51+
}
52+
expect(testArray).to.deep.equal([1,2,3]);
53+
});
54+
it('take iterator from Array',function(){
55+
let testArray = [1,2,3];
56+
let iterator = testArray[Symbol.iterator]();
57+
expect(iterator.next().value).to.equal(1);
58+
});
59+
});

test/promise.js

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
import {expect,assert} from 'chai';
2+
import 'babel-polyfill';
3+
import fs from 'fs';
4+
describe('test Promise',function(){
5+
it('Promise',function(){
6+
let testPromise = new Promise(function(resolve,reject){
7+
let string = 'xiaoming';
8+
resolve(string);
9+
});
10+
return testPromise.then(function(data){ //when test promise you should return a promise object in the test
11+
expect(data).to.equal('xiaoming');
12+
});
13+
});
14+
it('Promise.prototype.then',function(){
15+
let testPromise = new Promise(function(resolve,reject){
16+
fs.readFile(__dirname + '/test.txt',function(error,buffer){
17+
resolve(buffer.toString());
18+
});
19+
});
20+
return testPromise.then(function(data){
21+
expect(data).to.be.equal('test');
22+
});
23+
});
24+
it('Promise.prototype.catch',function(){
25+
let testPromise = new Promise(function(resole,reject){
26+
reject(new Error('an error'));
27+
});
28+
return testPromise.catch(function(error){
29+
expect(error.message).to.equal('an error');
30+
});
31+
});
32+
it('Promise.resolve',function(){
33+
let data = new Promise(function(resolve,reject){
34+
fs.readFile(__dirname + '/test.txt',function(error,buffer){
35+
resolve(buffer.toString());
36+
});
37+
});
38+
let testPromise = Promise.resolve(data);
39+
return testPromise.then(function(data){
40+
expect(data).to.equal('test');
41+
});
42+
});
43+
it('Promise.all',function(){
44+
let testdata = new Promise(function(resolve,reject){
45+
fs.readFile(__dirname + '/test.txt',function(error,buffer){
46+
resolve(buffer.toString());
47+
});
48+
});
49+
let anotherdata = new Promise(function(resolve,reject){
50+
fs.readFile(__dirname + '/another.txt',function(error,buffer){
51+
resolve(buffer.toString());
52+
});
53+
});
54+
return Promise.all([testdata,anotherdata]).then(function(data){
55+
expect(data[0]).to.equal('test');
56+
expect(data[1]).to.equal('another');
57+
});
58+
});
59+
});

test/reflect.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import {expect,assert} from 'chai';
2+
import 'babel-polyfill';
3+
describe('reflect',function(){
4+
it('Reflect.constructor',function(){
5+
function Man(name,age){
6+
this.name = name;
7+
this.age = age;
8+
}
9+
let xiaoming = Reflect.construct(Man,['xiaoming',20]);
10+
expect(xiaoming.name).to.equal('xiaoming');
11+
});
12+
it('Reflect.apply',function(){
13+
function add(firstNumber,secondNumber){
14+
return firstNumber + secondNumber;
15+
}
16+
let result = Reflect.apply(add,null,[1,2]);
17+
expect(result).to.be.equal(3);
18+
});
19+
it('Reflect.set',function(){
20+
let xiaoming = {};
21+
Reflect.set(xiaoming,'name','xiaoming');
22+
expect(xiaoming.name).to.equal('xiaoming')
23+
});
24+
25+
it('Reflect.get',function(){
26+
let xiaoming = {name:'xiaoming'};
27+
expect(Reflect.get(xiaoming,'name')).to.equal('xiaoming');
28+
});
29+
});

test/test.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
test

0 commit comments

Comments
 (0)