summary refs log tree commit diff stats
path: root/tests
diff options
context:
space:
mode:
authorTimothee Cour <timothee.cour2@gmail.com>2021-04-18 15:15:58 -0700
committerGitHub <noreply@github.com>2021-04-19 00:15:58 +0200
commit0a10af5a2ce27638c8298e96866a779928122269 (patch)
tree0a507184bab9d00893c4d1ae50ea4d0ce1c794a1 /tests
parentd6c8efa5d444f6849102dca192a199f12c8d55eb (diff)
downloadNim-0a10af5a2ce27638c8298e96866a779928122269.tar.gz
privateAccess now works with ref | ptr (#17760)
Diffstat (limited to 'tests')
-rw-r--r--tests/importalls/mt1.nim4
-rw-r--r--tests/stdlib/mimportutils.nim17
-rw-r--r--tests/stdlib/timportutils.nim82
-rw-r--r--tests/stdlib/ttestutils.nim29
4 files changed, 122 insertions, 10 deletions
diff --git a/tests/importalls/mt1.nim b/tests/importalls/mt1.nim
index 87c4eff16..b7983945c 100644
--- a/tests/importalls/mt1.nim
+++ b/tests/importalls/mt1.nim
@@ -10,8 +10,8 @@ doAssert m.m3p1 == 2
 ## field access
 import std/importutils
 privateAccess(Foo5)
-# var x = Foo5(z1: "foo", z2: m.kg1)
-# doAssert x.z1 == "foo"
+var x = Foo5(z1: "foo", z2: m.kg1)
+doAssert x.z1 == "foo"
 
 var f0: Foo5
 f0.z3 = 3
diff --git a/tests/stdlib/mimportutils.nim b/tests/stdlib/mimportutils.nim
new file mode 100644
index 000000000..d2b185cd3
--- /dev/null
+++ b/tests/stdlib/mimportutils.nim
@@ -0,0 +1,17 @@
+type
+  A* = object
+    a0*: int
+    ha1: float
+  B = object
+    b0*: int
+    hb1: float
+  C* = ref object
+    c0: int
+    hc1: float
+  D* = ptr object
+    d0: int
+    hd1: float
+  PA* = ref A
+  PtA* = ptr A
+
+proc initB*(): B = B()
diff --git a/tests/stdlib/timportutils.nim b/tests/stdlib/timportutils.nim
new file mode 100644
index 000000000..37e2b7102
--- /dev/null
+++ b/tests/stdlib/timportutils.nim
@@ -0,0 +1,82 @@
+import std/importutils
+import stdtest/testutils
+import mimportutils
+
+template main =
+  block: # privateAccess
+    assertAll:
+      var a: A
+      var b = initB() # B is private
+      compiles(a.a0)
+      compiles(b.b0)
+      not compiles(a.ha1)
+      not compiles(b.hb1)
+
+    block:
+      assertAll:
+        privateAccess A
+        compiles(a.ha1)
+        a.ha1 == 0.0
+        not compiles(a.hb1)
+        privateAccess b.typeof
+        b.hb1 = 3
+        type B2 = b.typeof
+        let b2 = B2(b0: 4, hb1: 5)
+        b.hb1 == 3
+        b2 == B2(b0: 4, hb1: 5)
+
+    assertAll:
+      not compiles(a.ha1)
+      not compiles(b.hb1)
+
+    block:
+      assertAll:
+        not compiles(C(c0: 1, hc1: 2))
+        privateAccess C
+        let c = C(c0: 1, hc1: 2)
+        c.hc1 == 2
+
+    block:
+      assertAll:
+        privateAccess PA
+        var pa = PA(a0: 1, ha1: 2)
+        pa.ha1 == 2
+        pa.ha1 = 3
+        pa.ha1 == 3
+
+    block:
+      assertAll:
+        var a = A(a0: 1)
+        var a2 = a.addr
+        not compiles(a2.ha1)
+        privateAccess PtA
+        a2.type is PtA
+        a2.ha1 = 2
+        a2.ha1 == 2
+        a.ha1 = 3
+        a2.ha1 == 3
+
+    block:
+      disableVm:
+        assertAll:
+          var a = A.create()
+          defer: dealloc(a)
+          a is PtA
+          a.typeof is PtA
+          not compiles(a.ha1)
+          privateAccess a.typeof
+          a.ha1 = 2
+          a.ha1 == 2
+          a[].ha1 = 3
+          a.ha1 == 3
+
+    block:
+      disableVm:
+        assertAll:
+          var a = A.create()
+          defer: dealloc(a)
+          privateAccess PtA
+          a.ha1 == 0
+
+static: main()
+main()
diff --git a/tests/stdlib/ttestutils.nim b/tests/stdlib/ttestutils.nim
index 7e39c9ae3..0d789cd76 100644
--- a/tests/stdlib/ttestutils.nim
+++ b/tests/stdlib/ttestutils.nim
@@ -1,11 +1,24 @@
 import stdtest/testutils
 
+block: # assertAll
+  assertAll:
+    1+1 == 2
+    var a = 3
+    a == 3
+
+  doAssertRaises(AssertionDefect):
+    assertAll:
+      1+1 == 2
+      var a = 3
+      a == 4
+
 block: # greedyOrderedSubsetLines
-  doAssert greedyOrderedSubsetLines("a1\na3", "a0\na1\na2\na3\na4")
-  doAssert not greedyOrderedSubsetLines("a3\na1", "a0\na1\na2\na3\na4") # out of order
-  doAssert not greedyOrderedSubsetLines("a1\na5", "a0\na1\na2\na3\na4") # a5 not in lhs
-
-  doAssert not greedyOrderedSubsetLines("a1\na5", "a0\na1\na2\na3\na4\nprefix:a5")
-  doAssert not greedyOrderedSubsetLines("a1\na5", "a0\na1\na2\na3\na4\na5:suffix")
-  doAssert not greedyOrderedSubsetLines("a5", "a0\na1\na2\na3\na4\nprefix:a5")
-  doAssert not greedyOrderedSubsetLines("a5", "a0\na1\na2\na3\na4\na5:suffix")
+  assertAll:
+    greedyOrderedSubsetLines("a1\na3", "a0\na1\na2\na3\na4")
+    not greedyOrderedSubsetLines("a3\na1", "a0\na1\na2\na3\na4") # out of order
+    not greedyOrderedSubsetLines("a1\na5", "a0\na1\na2\na3\na4") # a5 not in lhs
+
+    not greedyOrderedSubsetLines("a1\na5", "a0\na1\na2\na3\na4\nprefix:a5")
+    not greedyOrderedSubsetLines("a1\na5", "a0\na1\na2\na3\na4\na5:suffix")
+    not greedyOrderedSubsetLines("a5", "a0\na1\na2\na3\na4\nprefix:a5")
+    not greedyOrderedSubsetLines("a5", "a0\na1\na2\na3\na4\na5:suffix")