]> gitweb.factorcode.org Git - factor.git/commitdiff
db.tuples-tests: add tests for each-tuple and update-tuples
authorAlexander Iljin <ajsoft@yandex.ru>
Wed, 21 Feb 2018 17:25:04 +0000 (18:25 +0100)
committerJohn Benediktsson <mrjbq7@gmail.com>
Wed, 21 Feb 2018 23:05:20 +0000 (15:05 -0800)
basis/db/tuples/tuples-tests.factor

index e3c72d9710a8c5de85ac68dee05f7d746f6d3968..0bf66abdf4b89d960e5e76ceb85edae08f1bda7f 100644 (file)
@@ -1,4 +1,5 @@
 ! Copyright (C) 2008 Doug Coleman.
+! Copyright (C) 2018 Alexander Ilin.
 ! See http://factorcode.org/license.txt for BSD license.
 USING: accessors calendar calendar.parser classes continuations
 db.tester db.tuples db.types kernel math math.intervals math.ranges
@@ -656,3 +657,42 @@ example "EXAMPLE"
 
 [ test-blob-select ] test-sqlite
 [ test-blob-select ] test-postgresql
+
+TUPLE: select-me id data ;
+
+select-me "select_me"
+{
+    { "id" "ID" +db-assigned-id+ }
+    { "data" "DATA" TEXT }
+} define-persistent
+
+: test-mapping ( -- )
+    select-me drop-table
+    select-me ensure-table
+    [ ] [ select-me new                insert-tuple ] unit-test
+    [ ] [ select-me new "test2" >>data insert-tuple ] unit-test
+
+    [
+        T{ select-me { id 1 } { data f } }
+        T{ select-me { id 2 } { data "test2" } }
+    ] [ select-me new select-tuples first2 ] unit-test
+
+    [ V{ f "test2" } ]
+    [
+        select-me new [ data>> ] collector [ each-tuple ] dip
+    ] unit-test
+
+    [ V{ "test" "test2" } ] [
+        select-me new NULL >>data [ "test" >>data ] update-tuples
+        select-me new [ data>> ] collector [ each-tuple ] dip
+    ] unit-test
+
+    [ V{ "test1" "test2" } ] [
+        select-me new [
+            dup data>> "test" = [ "test1" >>data ] [ drop f ] if
+        ] update-tuples
+        select-me new [ data>> ] collector [ each-tuple ] dip
+    ] unit-test ;
+
+[ test-mapping ] test-sqlite
+[ test-mapping ] test-postgresql