summary refs log tree commit diff stats
path: root/tests/js
diff options
context:
space:
mode:
Diffstat (limited to 'tests/js')
-rw-r--r--tests/js/taddr.nim38
-rw-r--r--tests/js/tbyvar.nim10
-rw-r--r--tests/js/tcopying.nim13
-rw-r--r--tests/js/test2.nim15
-rw-r--r--tests/js/testmagic.nim5
-rw-r--r--tests/js/testobjs.nim12
-rw-r--r--tests/js/tobjfieldbyvar.nim20
-rw-r--r--tests/js/trefbyvar.nim35
-rw-r--r--tests/js/tstringitems.nim24
-rw-r--r--tests/js/tunittests.nim4
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":