-
Notifications
You must be signed in to change notification settings - Fork 0
/
test-typeself.js
83 lines (83 loc) · 2.56 KB
/
test-typeself.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
import { log } from "./log.js";
import { Type, isType } from "../modules/typeself.js";
const test_typeself = () => {
log("=Are you a member??? ========= ");
const Member = (a) => Type(Member)([a]);
const alice = "Alice";
const bob = Member("Bob");
log("Member status of " + alice); //Member status of Alice
log(isType(Member)(alice)); //false
log("Member status of " + bob); //Member status of Bob
log(isType(Member)(bob)); //true
log("=Is this a special operation??========= ");
const specialOperation = (f) => Type(specialOperation)(f);
const f1 = (a) => a + 1; //vanilla function
const f2 = Type(specialOperation) //typed function
((a) => {
//This function might be considered to be "special"
//because it does some featured operations in a context.
return a * 2;
});
log(isType(specialOperation)(f1)); //false
log(f1(1) // f1 = a => a +1
); //2 // just in case, let you know
log(isType(specialOperation)(f2)); //true
log(f2(1) // f2 = a => a * 2
); //2 // just in case, let you know
log("=type test of nontyped=========================");
const I = (a) => a; //just a dummy function
log(isType(I)(I) // true
);
log(isType(I)(1) // false
);
log(isType(I)([]) // fakse
);
log(isType(I)({}) // false
);
log(isType(I)("hello") //fakse
);
log(isType(I)((x) => x) // false
);
log(isType(I)(true) // false
);
log(isType(I)(false) // false
);
log("=type test of typed=========================");
log(isType(I)(Type(I)(I)) // true
);
log(isType(I)(Type(I)(1)) // true
);
log(isType(I)(Type(I)([])) // true
);
log(isType(I)(Type(I)({})) // true
);
log(isType(I)(Type(I)("hello")) //true
);
log(isType(I)(Type(I)((x) => x)) // true
);
log(isType(I)(Type(I)(true)) // true
);
log(isType(I)(Type(I)(false)) // true
);
log((Type(I)(false) == false)
? "Type(I)(false) == false (as should be)"
: "something is wrong");
log((Type(I)(false) !== false) //Object !== Primitive
? "Type(I)(false) !== false (as should be)"
: "something is wrong");
log(isType(I)(Type(I)(NaN)) //true
);
log(isType(I)(Type(I)(undefined)) // false
);
log(isType(I)(Type(I)(null)) // false
);
log("check---------------------------");
log(Type(I)(1) + Type(I)(2) //3
);
log(Type(I)([1, 2, 3]) //[1, 2, 3]
);
log("check---------------------------");
const n = Type(I)(6);
log(n.toString());
};
export { test_typeself };