diff options
Diffstat (limited to 'tests/js')
-rw-r--r-- | tests/js/taddr.nim | 38 | ||||
-rw-r--r-- | tests/js/tbyvar.nim | 10 | ||||
-rw-r--r-- | tests/js/tcopying.nim | 13 | ||||
-rw-r--r-- | tests/js/test2.nim | 15 | ||||
-rw-r--r-- | tests/js/testmagic.nim | 5 | ||||
-rw-r--r-- | tests/js/testobjs.nim | 12 | ||||
-rw-r--r-- | tests/js/tobjfieldbyvar.nim | 20 | ||||
-rw-r--r-- | tests/js/trefbyvar.nim | 35 | ||||
-rw-r--r-- | tests/js/tstringitems.nim | 24 | ||||
-rw-r--r-- | tests/js/tunittests.nim | 4 |
10 files changed, 167 insertions, 9 deletions
diff --git a/tests/js/taddr.nim b/tests/js/taddr.nim index 6a60aa902..1fba30d55 100644 --- a/tests/js/taddr.nim +++ b/tests/js/taddr.nim @@ -1,3 +1,7 @@ +discard """ + action: run +""" + type T = object x: int s: string @@ -29,8 +33,40 @@ doAssert objDeref.x == 42 obj.s = "lorem ipsum dolor sit amet" var indexAddr = addr(obj.s[2]) -doAssert indexAddr[] == '4' +doAssert indexAddr[] == 'r' indexAddr[] = 'd' doAssert indexAddr[] == 'd' + +doAssert obj.s == "lodem ipsum dolor sit amet" + +# Bug #2148 +var x: array[2, int] +var y = addr x[1] + +y[] = 12 +doAssert(x[1] == 12) + +type + Foo = object + bar: int + +var foo: array[2, Foo] +var z = addr foo[1] + +z[].bar = 12345 +doAssert(foo[1].bar == 12345) + +var t : tuple[a, b: int] +var pt = addr t[1] +pt[] = 123 +doAssert(t.b == 123) + +#block: # Test "untyped" pointer. +proc testPtr(p: pointer, a: int) = + doAssert(a == 5) + (cast[ptr int](p))[] = 124 +var i = 123 +testPtr(addr i, 5) +doAssert(i == 124) diff --git a/tests/js/tbyvar.nim b/tests/js/tbyvar.nim index 1269e6f66..9714cd56b 100644 --- a/tests/js/tbyvar.nim +++ b/tests/js/tbyvar.nim @@ -31,3 +31,13 @@ proc main = echo y main() + +# Test: pass var seq to var openarray +var s = @[2, 1] +proc foo(a: var openarray[int]) = a[0] = 123 + +proc bar(s: var seq[int], a: int) = + doAssert(a == 5) + foo(s) +s.bar(5) +doAssert(s == @[123, 1]) diff --git a/tests/js/tcopying.nim b/tests/js/tcopying.nim new file mode 100644 index 000000000..4f72d6ada --- /dev/null +++ b/tests/js/tcopying.nim @@ -0,0 +1,13 @@ +discard """ + output: '''123 +''' +""" + +type MyArray = array[1, int] + +proc changeArray(a: var MyArray) = + a = [123] + +var a : MyArray +changeArray(a) +echo a[0] diff --git a/tests/js/test2.nim b/tests/js/test2.nim index 5a734358c..f6976d058 100644 --- a/tests/js/test2.nim +++ b/tests/js/test2.nim @@ -1,18 +1,19 @@ discard """ output: '''foo -js 3.14''' +js 3.14 +7''' """ # This file tests the JavaScript generator -# #335 +# #335 proc foo() = var bar = "foo" proc baz() = echo bar baz() foo() - + # #376 when not defined(JS): proc foo(val: float): string = "no js " & $val @@ -20,3 +21,11 @@ else: proc foo(val: float): string = "js " & $val echo foo(3.14) + +# #2495 +type C = concept x + +proc test(x: C, T: typedesc): T = + cast[T](x) + +echo 7.test(int8) diff --git a/tests/js/testmagic.nim b/tests/js/testmagic.nim index 5f793ae05..8e06f1a9b 100644 --- a/tests/js/testmagic.nim +++ b/tests/js/testmagic.nim @@ -1,5 +1,7 @@ discard """ - output: '''true''' + output: '''true +123 +''' """ # This file tests some magic @@ -7,3 +9,4 @@ discard """ var foo = cstring("foo") var bar = cstring("foo") echo(foo == bar) +echo "01234"[1 .. ^2] diff --git a/tests/js/testobjs.nim b/tests/js/testobjs.nim index 4fb9a83dc..0166c0f38 100644 --- a/tests/js/testobjs.nim +++ b/tests/js/testobjs.nim @@ -1,3 +1,7 @@ +discard """ + action: run +""" + ## Tests javascript object generation type @@ -28,7 +32,7 @@ var recurse1 = Recurse[int](data: 1, next: recurse2) -assert(test.name == "Jorden") -assert(knight.age == 19) -assert(knight.item.price == 50) -assert(recurse1.next.next.data == 3) +doAssert test.name == "Jorden" +doAssert knight.age == 19 +doAssert knight.item.price == 50 +doAssert recurse1.next.next.data == 3 diff --git a/tests/js/tobjfieldbyvar.nim b/tests/js/tobjfieldbyvar.nim new file mode 100644 index 000000000..91a3c1315 --- /dev/null +++ b/tests/js/tobjfieldbyvar.nim @@ -0,0 +1,20 @@ +discard """ + output: '''5 +''' +""" + +# bug #2798 + +type Inner = object + value: int + +type Outer = object + i: Inner + +proc test(i: var Inner) = + i.value += 5 + +var o: Outer +test(o.i) + +echo o.i.value diff --git a/tests/js/trefbyvar.nim b/tests/js/trefbyvar.nim new file mode 100644 index 000000000..68dd36543 --- /dev/null +++ b/tests/js/trefbyvar.nim @@ -0,0 +1,35 @@ +discard """ + output: '''0 +5 +0 +5''' +""" + +# bug #2476 + +type A = ref object + m: int + +proc f(a: var A) = + var b: A + b.new() + b.m = 5 + a = b + +var t: A +t.new() + +echo t.m +t.f() +echo t.m + +proc main = + # now test the same for locals + var t: A + t.new() + + echo t.m + t.f() + echo t.m + +main() diff --git a/tests/js/tstringitems.nim b/tests/js/tstringitems.nim new file mode 100644 index 000000000..f4ea02fec --- /dev/null +++ b/tests/js/tstringitems.nim @@ -0,0 +1,24 @@ +discard """ + output: '''Hello +Hello''' +""" + +# bug #2581 + +const someVars = [ "Hello" ] +var someVars2 = [ "Hello" ] + +proc getSomeVar: string = + for i in someVars: + if i == "Hello": + result = i + break + +proc getSomeVar2: string = + for i in someVars2: + if i == "Hello": + result = i + break + +echo getSomeVar() +echo getSomeVar2() diff --git a/tests/js/tunittests.nim b/tests/js/tunittests.nim index af38cd9b9..4b09c99a9 100644 --- a/tests/js/tunittests.nim +++ b/tests/js/tunittests.nim @@ -1,3 +1,7 @@ +discard """ + output: '''[OK] >:)''' +""" + import unittest suite "Bacon": |