summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorGravatar Artyom Shalkhakov <artyom.shalkhakov@gmail.com>2018-05-15 21:48:15 +0600
committerGravatar Artyom Shalkhakov <artyom.shalkhakov@gmail.com>2018-05-15 21:48:15 +0600
commit4c01511f5bf2229da7b146943444278d714ed7d6 (patch)
tree3f353e6bc0fe5c5b03ce3616c3199f15bcee26ad /tests
parent1078553f5a8de2a5e85dbd49058370afeefa68c7 (diff)
More tests.
Diffstat (limited to 'tests')
-rw-r--r--tests/Makefile8
-rw-r--r--tests/aborter.py11
-rw-r--r--tests/aborter.urp1
-rw-r--r--tests/aborter2.py11
-rw-r--r--tests/active.py14
-rw-r--r--tests/activeBlock.py20
-rw-r--r--tests/activeBlock.ur2
-rw-r--r--tests/activeEmpty.py12
-rw-r--r--tests/activeFocus.py18
-rw-r--r--tests/activeFocus.ur2
-rw-r--r--tests/agg.py8
-rw-r--r--tests/agg.ur20
-rw-r--r--tests/ahead.py15
-rw-r--r--tests/babySpawn.py12
14 files changed, 147 insertions, 7 deletions
diff --git a/tests/Makefile b/tests/Makefile
index 250a2ece..ecf5557b 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -5,6 +5,13 @@ test.o: test.c
###
simple::
+ ./driver.sh aborter2
+ ./driver.sh aborter
+ ./driver.sh activeBlock
+ ./driver.sh activeFocus
+ ./driver.sh active
+ ./driver.sh agg
+ ./driver.sh ahead
./driver.sh alert
./driver.sh align
./driver.sh appjs
@@ -13,6 +20,7 @@ simple::
./driver.sh attrs_escape
echo ./driver.sh attrs
./driver.sh autocomp
+ ./driver.sh babySpawn
./driver.sh bindpat
./driver.sh DynChannel
./driver.sh jsonTest
diff --git a/tests/aborter.py b/tests/aborter.py
new file mode 100644
index 00000000..8379c656
--- /dev/null
+++ b/tests/aborter.py
@@ -0,0 +1,11 @@
+import unittest
+import base
+
+class Suite(base.Base):
+ def test_1(self):
+ """Test case 1"""
+ self.start('Aborter/main')
+ self.assertEqual("Fatal Error", self.driver.title)
+ txt = self.body_text()
+ self.assertEqual("Fatal error: :0:0-0:0: No way, Jose!", txt)
+
diff --git a/tests/aborter.urp b/tests/aborter.urp
index fc1925ae..8c971440 100644
--- a/tests/aborter.urp
+++ b/tests/aborter.urp
@@ -1,4 +1,5 @@
database dbname=aborter
sql aborter.sql
+safeGet Aborter/main
aborter
diff --git a/tests/aborter2.py b/tests/aborter2.py
new file mode 100644
index 00000000..c3f1e10e
--- /dev/null
+++ b/tests/aborter2.py
@@ -0,0 +1,11 @@
+import unittest
+import base
+
+class Suite(base.Base):
+ def test_1(self):
+ """Test case 1"""
+ self.start('Aborter2/main')
+ self.assertEqual("", self.driver.title)
+ txt = self.body_text()
+ self.assertEqual("Result: 0", txt)
+
diff --git a/tests/active.py b/tests/active.py
new file mode 100644
index 00000000..08846ac5
--- /dev/null
+++ b/tests/active.py
@@ -0,0 +1,14 @@
+import unittest
+import base
+
+class Suite(base.Base):
+ def test_1(self):
+ """Test case 1"""
+ self.start()
+ b1 = self.xpath('span[1]/button')
+ b2 = self.xpath('span[2]/button')
+ for _ in range(3):
+ b1.click()
+ for _ in range(5):
+ b2.click()
+ self.assertEqual("3\n5", self.body_text())
diff --git a/tests/activeBlock.py b/tests/activeBlock.py
new file mode 100644
index 00000000..d0e43fdb
--- /dev/null
+++ b/tests/activeBlock.py
@@ -0,0 +1,20 @@
+import unittest
+import base
+import time
+
+class Suite(base.Base):
+ def test_1(self):
+ """Test case 1"""
+ self.start()
+ alert = self.driver.switch_to.alert
+ self.assertEqual("Error: May not 'sleep' in main thread of 'code' for <active>", alert.text)
+ alert.accept()
+ time.sleep(0.1)
+ alert = self.driver.switch_to.alert
+ self.assertEqual("Hi!", alert.text)
+ alert.accept()
+ button = self.xpath('span[1]/button')
+ button.click()
+ txt = self.body_text()
+ self.assertEqual("Hi! Click me! Success", txt)
+
diff --git a/tests/activeBlock.ur b/tests/activeBlock.ur
index 5560edda..bced4af3 100644
--- a/tests/activeBlock.ur
+++ b/tests/activeBlock.ur
@@ -1,7 +1,7 @@
fun main () : transaction page = return <xml><body>
<active code={s <- source ""; return <xml>
<dyn signal={s <- signal s; return (txt s)}/>
- <button onclick={fn _ => set s "Hi!"}/>
+ <button onclick={fn _ => set s "Hi!"}>Click me!</button>
</xml>}/>
<active code={sleep 1; return <xml>Hi!</xml>}/>
diff --git a/tests/activeEmpty.py b/tests/activeEmpty.py
new file mode 100644
index 00000000..8872833a
--- /dev/null
+++ b/tests/activeEmpty.py
@@ -0,0 +1,12 @@
+import unittest
+import base
+
+class Suite(base.Base):
+ def test_1(self):
+ """Test case 1"""
+ self.start()
+ alert = self.driver.switch_to.alert
+ self.assertEqual("Howdy, neighbor!", alert.text)
+ alert.accept()
+ txt = self.body_text()
+ self.assertEqual("This one ain't empty.", txt)
diff --git a/tests/activeFocus.py b/tests/activeFocus.py
new file mode 100644
index 00000000..47b9a921
--- /dev/null
+++ b/tests/activeFocus.py
@@ -0,0 +1,18 @@
+import unittest
+import base
+
+class Suite(base.Base):
+ def test_1(self):
+ """Test case 1"""
+ self.start()
+ uw0 = self.xpath('input[2]')
+ active = self.driver.switch_to.active_element
+ self.assertEqual(uw0, active)
+ def test_2(self):
+ """Test case 2"""
+ self.start('dynamic')
+ btn = self.xpath('button')
+ btn.click()
+ uw1 = self.xpath('span/input[2]')
+ active = self.driver.switch_to.active_element
+ self.assertEqual(uw1, active)
diff --git a/tests/activeFocus.ur b/tests/activeFocus.ur
index 94d465e9..82d2c0c9 100644
--- a/tests/activeFocus.ur
+++ b/tests/activeFocus.ur
@@ -14,5 +14,5 @@ fun dynamic () : transaction page =
<ctextbox/>
<ctextbox id={i}/>
<active code={giveFocus i; return <xml>Done</xml>}/>
- </xml>}/>
+ </xml>}>Click</button>
</body></xml>
diff --git a/tests/agg.py b/tests/agg.py
new file mode 100644
index 00000000..0b421d37
--- /dev/null
+++ b/tests/agg.py
@@ -0,0 +1,8 @@
+import unittest
+import base
+
+class Suite(base.Base):
+ def test_1(self):
+ """Test case 1"""
+ self.start('Agg/main')
+ self.assertEqual("0;1;2;\na, 50;", self.body_text())
diff --git a/tests/agg.ur b/tests/agg.ur
index 19a8644b..2d8eed43 100644
--- a/tests/agg.ur
+++ b/tests/agg.ur
@@ -1,13 +1,23 @@
table t1 : {A : int, B : string, C : float}
table t2 : {A : float, D : int, E : option string}
-val q1 : sql_query [] _ _ = (SELECT COUNT( * ) FROM t1)
-val q2 : sql_query [] _ _ = (SELECT AVG(t1.A) FROM t1)
-val q3 : sql_query [] _ _ = (SELECT SUM(t1.C) FROM t1)
-val q4 : sql_query [] _ _ = (SELECT MIN(t1.B), MAX(t1.A) FROM t1)
-val q5 : sql_query [] _ _ = (SELECT SUM(t1.A) FROM t1 GROUP BY t1.B)
+val q1 : sql_query [] [] _ _ = (SELECT COUNT( * ) FROM t1)
+val q2 : sql_query [] [] _ _ = (SELECT AVG(t1.A) FROM t1)
+val q3 : sql_query [] [] _ _ = (SELECT SUM(t1.C) FROM t1)
+val q4 : sql_query [] [] _ _ = (SELECT MIN(t1.B), MAX(t1.A) FROM t1)
+val q5 : sql_query [] [] _ _ = (SELECT SUM(t1.A) FROM t1 GROUP BY t1.B)
val q6 = (SELECT COUNT(t2.E) FROM t2 GROUP BY t2.D)
+task initialize = fn () =>
+ dml (INSERT INTO t1 (A, B, C) VALUES (1, 'a', 1.0));
+ dml (INSERT INTO t1 (A, B, C) VALUES (2, 'b', 2.0));
+ dml (INSERT INTO t1 (A, B, C) VALUES (50, 'c', 99.0));
+ dml (INSERT INTO t2 (A, D, E) VALUES (1.0, 1, NULL));
+ dml (INSERT INTO t2 (A, D, E) VALUES (1.0, 2, {[Some "a"]}));
+ dml (INSERT INTO t2 (A, D, E) VALUES (1.0, 3, NULL));
+ dml (INSERT INTO t2 (A, D, E) VALUES (1.0, 3, {[Some "b"]}));
+ dml (INSERT INTO t2 (A, D, E) VALUES (1.0, 3, {[Some "c"]}))
+
fun main () : transaction page =
xml <- queryX q6 (fn r => <xml>{[r.1]};</xml>);
xml2 <- queryX q4 (fn r => <xml>{[r.1]}, {[r.2]};</xml>);
diff --git a/tests/ahead.py b/tests/ahead.py
new file mode 100644
index 00000000..6e767948
--- /dev/null
+++ b/tests/ahead.py
@@ -0,0 +1,15 @@
+import unittest
+import base
+import time
+
+class Suite(base.Base):
+ def test_1(self):
+ """Test case 1"""
+ self.start()
+ alert = self.driver.switch_to.alert
+ self.assertEqual("Hi!", alert.text)
+ alert.accept()
+ time.sleep(0.1)
+ alert = self.driver.switch_to.alert
+ self.assertEqual("Bye!", alert.text)
+ alert.accept()
diff --git a/tests/babySpawn.py b/tests/babySpawn.py
new file mode 100644
index 00000000..6693e969
--- /dev/null
+++ b/tests/babySpawn.py
@@ -0,0 +1,12 @@
+import unittest
+import base
+import time
+
+class Suite(base.Base):
+ def test_1(self):
+ """Test case 1"""
+ self.start()
+ btn = self.xpath('button')
+ btn.click()
+ alert = self.driver.switch_to.alert
+ self.assertEqual("Hi", alert.text)