Add do_call macro, implement Bool builtins, add tests
* I noticed that `fn call(...)` in all objects was identical, so I made a macro for it. This should make things a little easier to read, since do_call is about 30 lines a pop. * Bool has a constructor now, and a to_int and to_float implementations * Add tests for constructors and add new bool tests Signed-off-by: Alek Ratzloff <alekratz@gmail.com>
This commit is contained in:
72
tests/bool.npp
Normal file
72
tests/bool.npp
Normal file
@@ -0,0 +1,72 @@
|
||||
# Bool type operator and function tests
|
||||
|
||||
a = true
|
||||
b = false
|
||||
|
||||
# __not__
|
||||
println("__not__")
|
||||
println(!a)
|
||||
println(!!a)
|
||||
println(!!!a)
|
||||
println(!!!!a)
|
||||
println(!b)
|
||||
println(!!b)
|
||||
println(!!!b)
|
||||
println(!!!!b)
|
||||
|
||||
# __and__
|
||||
println("__and__")
|
||||
println(a && b)
|
||||
println(b && a)
|
||||
println(a && a)
|
||||
println(b && b)
|
||||
|
||||
# __or__
|
||||
println("__or__")
|
||||
println(a || b)
|
||||
println(b || a)
|
||||
println(a || a)
|
||||
println(b || b)
|
||||
|
||||
# __eq__
|
||||
println("__eq__")
|
||||
println(a == a)
|
||||
println(a == b)
|
||||
println(b == b)
|
||||
println(b == a)
|
||||
println(a == true)
|
||||
println(true == a)
|
||||
println(a == false)
|
||||
println(false == a)
|
||||
println(b == true)
|
||||
println(true == b)
|
||||
println(b == false)
|
||||
println(false == b)
|
||||
|
||||
# __ne__
|
||||
println("__ne__")
|
||||
println(a != a)
|
||||
println(a != b)
|
||||
println(b != b)
|
||||
println(b != a)
|
||||
println(a != true)
|
||||
println(true != a)
|
||||
println(a != false)
|
||||
println(false != a)
|
||||
println(b != true)
|
||||
println(true != b)
|
||||
println(b != false)
|
||||
println(false != b)
|
||||
|
||||
# constructor
|
||||
println("constructor")
|
||||
println(Bool(""))
|
||||
println(Bool(0))
|
||||
println(Bool(0.0))
|
||||
println(Bool(false))
|
||||
# This is a fun one. Bool constructor does *not* parse bools, it just checks if they are empty.
|
||||
println(Bool("false"))
|
||||
println(Bool("true"))
|
||||
println(Bool(1))
|
||||
println(Bool(1.0))
|
||||
println(Bool(true))
|
||||
55
tests/bool.npp.expect
Normal file
55
tests/bool.npp.expect
Normal file
@@ -0,0 +1,55 @@
|
||||
__not__
|
||||
false
|
||||
true
|
||||
false
|
||||
true
|
||||
true
|
||||
false
|
||||
true
|
||||
false
|
||||
__and__
|
||||
false
|
||||
false
|
||||
true
|
||||
false
|
||||
__or__
|
||||
true
|
||||
true
|
||||
true
|
||||
false
|
||||
__eq__
|
||||
true
|
||||
false
|
||||
true
|
||||
false
|
||||
true
|
||||
true
|
||||
false
|
||||
false
|
||||
false
|
||||
false
|
||||
true
|
||||
true
|
||||
__ne__
|
||||
false
|
||||
true
|
||||
false
|
||||
true
|
||||
false
|
||||
false
|
||||
true
|
||||
true
|
||||
true
|
||||
true
|
||||
false
|
||||
false
|
||||
constructor
|
||||
false
|
||||
false
|
||||
false
|
||||
false
|
||||
true
|
||||
true
|
||||
true
|
||||
true
|
||||
true
|
||||
@@ -128,3 +128,12 @@ println(-0.0)
|
||||
println(--0.0)
|
||||
println(---0.0)
|
||||
|
||||
# constructor
|
||||
println("constructor")
|
||||
println(Float("10"))
|
||||
println(Float("10e3"))
|
||||
println(Float("12e-3"))
|
||||
println(Float(1234))
|
||||
println(Float(1.5))
|
||||
println(Float(true))
|
||||
println(Float(false))
|
||||
|
||||
@@ -96,3 +96,11 @@ __neg__
|
||||
-0.0
|
||||
0.0
|
||||
-0.0
|
||||
constructor
|
||||
10.0
|
||||
10000.0
|
||||
0.012
|
||||
1234.0
|
||||
1.5
|
||||
1.0
|
||||
0.0
|
||||
|
||||
@@ -123,3 +123,11 @@ println(10 - -20)
|
||||
println(-10 - 20)
|
||||
println(-10 - -20)
|
||||
println(-0xff)
|
||||
|
||||
# constructor
|
||||
println("constructor")
|
||||
println(Int("10"))
|
||||
println(Int(1234))
|
||||
println(Int(1.5))
|
||||
println(Int(true))
|
||||
println(Int(false))
|
||||
|
||||
@@ -93,3 +93,9 @@ __neg__
|
||||
-30
|
||||
10
|
||||
-255
|
||||
constructor
|
||||
10
|
||||
1234
|
||||
1
|
||||
1
|
||||
0
|
||||
|
||||
@@ -33,8 +33,17 @@ println(a + a)
|
||||
println(a + a + a)
|
||||
println(a + b)
|
||||
println(b + a)
|
||||
|
||||
# __mul__
|
||||
println("__mul__")
|
||||
println(a * 4)
|
||||
println(b * 5)
|
||||
println((a * 6).to_repr())
|
||||
|
||||
# constructor
|
||||
println("constructor")
|
||||
println(Str("asdf"))
|
||||
println(Str(1234))
|
||||
println(Str(1.0))
|
||||
println(Str(true))
|
||||
println(Str(false))
|
||||
|
||||
@@ -24,3 +24,9 @@ __mul__
|
||||
asdfasdfasdfasdf
|
||||
This is a longer sentenceThis is a longer sentenceThis is a longer sentenceThis is a longer sentenceThis is a longer sentence
|
||||
'asdfasdfasdfasdfasdfasdf'
|
||||
constructor
|
||||
asdf
|
||||
1234
|
||||
1.0
|
||||
true
|
||||
false
|
||||
|
||||
Reference in New Issue
Block a user