From 770b259f6374e23bc3e1a4634e7947fa6f684908 Mon Sep 17 00:00:00 2001 From: Alexander Kreft <akreft@trineo.org> Date: Mon, 6 Sep 2021 13:16:35 +0000 Subject: [PATCH] TST: Add tests for properties --- test/runtests.jl | 95 +++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 89 insertions(+), 6 deletions(-) diff --git a/test/runtests.jl b/test/runtests.jl index 66b08bd..b105434 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -166,11 +166,94 @@ using CaosDB ) == "Property3" end - @testset "Datatype and values" begin - # TODO(hernik, daniel) tests for some kinds of datatypes and - # values. We probably don't need all since the actual - # functions are already being tested in the C++ client but at - # least some strings, numbers, and lists thereof should be - # tested here, too + @testset "Property values and datatypes" begin + @testset "Entity properties" begin + int_prop = CaosDB.Entity.create_property_entity(name="IntProp", datatype="INTEGER") + double_prop = CaosDB.Entity.create_property_entity(name="DoubleProp", datatype="DOUBLE") + bool_prop = CaosDB.Entity.create_property_entity(name="BoolProp", datatype="BOOLEAN") + string_prop = CaosDB.Entity.create_property_entity(name="StringProp", datatype="TEXT") + CaosDB.Entity.set_value(int_prop, 123) + CaosDB.Entity.set_value(double_prop, 10.246) + CaosDB.Entity.set_value(bool_prop, true) + CaosDB.Entity.set_value(string_prop, "Hello World") + @test CaosDB.Entity.get_value(int_prop) == 123 + @test CaosDB.Entity.get_value(double_prop) == 10.246 + @test CaosDB.Entity.get_value(bool_prop) === true + @test CaosDB.Entity.get_value(string_prop) == "Hello World" + @test isa(CaosDB.Entity.get_value(int_prop), Integer) + @test isa(CaosDB.Entity.get_value(double_prop), Number) + @test isa(CaosDB.Entity.get_value(bool_prop), Bool) + @test isa(CaosDB.Entity.get_value(string_prop), String) + @test CaosDB.Entity.get_datatype(int_prop) == ("INTEGER", false, false) + @test CaosDB.Entity.get_datatype(double_prop) == ("DOUBLE", false, false) + @test CaosDB.Entity.get_datatype(bool_prop) == ("BOOLEAN", false, false) + @test CaosDB.Entity.get_datatype(string_prop) == ("TEXT", false, false) + + """ Test lists """ + int_list_prop = CaosDB.Entity.create_property_entity(name="IntProp", datatype="INTEGER", is_list=true) + double_list_prop = CaosDB.Entity.create_property_entity(name="DoubleProp", datatype="DOUBLE", is_list=true) + bool_list_prop = CaosDB.Entity.create_property_entity(name="BoolProp", datatype="BOOLEAN", is_list=true) + string_list_prop = CaosDB.Entity.create_property_entity(name="StringProp", datatype="TEXT", is_list=true) + CaosDB.Entity.set_value(int_list_prop, [123, 456]) + CaosDB.Entity.set_value(double_list_prop, [10.246, 3.14]) + CaosDB.Entity.set_value(bool_list_prop, [true, false]) + CaosDB.Entity.set_value(string_list_prop, ["Hello", "World"]) + @test CaosDB.Entity.get_value(int_list_prop) == [123, 456] + @test CaosDB.Entity.get_value(double_list_prop) == [10.246, 3.14] + @test CaosDB.Entity.get_value(bool_list_prop) === [true, false] + @test CaosDB.Entity.get_value(string_list_prop) == ["Hello", "World"] + @test isa(CaosDB.Entity.get_value(int_list_prop), Vector{Cint}) + @test isa(CaosDB.Entity.get_value(double_list_prop), Vector{Cdouble}) + @test isa(CaosDB.Entity.get_value(bool_list_prop), Vector{Bool}) + @test isa(CaosDB.Entity.get_value(string_list_prop), Vector{String}) + @test CaosDB.Entity.get_datatype(int_list_prop) == ("INTEGER", false, true) + @test CaosDB.Entity.get_datatype(double_list_prop) == ("DOUBLE", false, true) + @test CaosDB.Entity.get_datatype(bool_list_prop) == ("BOOLEAN", false, true) + @test CaosDB.Entity.get_datatype(string_list_prop) == ("TEXT", false, true) + end + @testset "Property properties" begin + int_prop = CaosDB.Entity.create_property(name="IntProp", datatype="INTEGER") + double_prop = CaosDB.Entity.create_property(name="DoubleProp", datatype="DOUBLE") + bool_prop = CaosDB.Entity.create_property(name="BoolProp", datatype="BOOLEAN") + string_prop = CaosDB.Entity.create_property(name="StringProp", datatype="TEXT") + CaosDB.Entity.set_value(int_prop, 123) + CaosDB.Entity.set_value(double_prop, 10.246) + CaosDB.Entity.set_value(bool_prop, true) + CaosDB.Entity.set_value(string_prop, "Hello World") + @test CaosDB.Entity.get_value(int_prop) == 123 + @test CaosDB.Entity.get_value(double_prop) == 10.246 + @test CaosDB.Entity.get_value(bool_prop) === true + @test CaosDB.Entity.get_value(string_prop) == "Hello World" + @test isa(CaosDB.Entity.get_value(int_prop), Integer) + @test isa(CaosDB.Entity.get_value(double_prop), Number) + @test isa(CaosDB.Entity.get_value(bool_prop), Bool) + @test isa(CaosDB.Entity.get_value(string_prop), String) + @test CaosDB.Entity.get_datatype(int_prop) == ("INTEGER", false, false) + @test CaosDB.Entity.get_datatype(double_prop) == ("DOUBLE", false, false) + @test CaosDB.Entity.get_datatype(bool_prop) == ("BOOLEAN", false, false) + @test CaosDB.Entity.get_datatype(string_prop) == ("TEXT", false, false) + + """ Test lists """ + int_list_prop = CaosDB.Entity.create_property(name="IntProp", datatype="INTEGER", is_list=true) + double_list_prop = CaosDB.Entity.create_property(name="DoubleProp", datatype="DOUBLE", is_list=true) + bool_list_prop = CaosDB.Entity.create_property(name="BoolProp", datatype="BOOLEAN", is_list=true) + string_list_prop = CaosDB.Entity.create_property(name="StringProp", datatype="TEXT", is_list=true) + CaosDB.Entity.set_value(int_list_prop, [123, 456]) + CaosDB.Entity.set_value(double_list_prop, [10.246, 3.14]) + CaosDB.Entity.set_value(bool_list_prop, [true, false]) + CaosDB.Entity.set_value(string_list_prop, ["Hello", "World"]) + @test CaosDB.Entity.get_value(int_list_prop) == [123, 456] + @test CaosDB.Entity.get_value(double_list_prop) == [10.246, 3.14] + @test CaosDB.Entity.get_value(bool_list_prop) === [true, false] + @test CaosDB.Entity.get_value(string_list_prop) == ["Hello", "World"] + @test isa(CaosDB.Entity.get_value(int_list_prop), Vector{Cint}) + @test isa(CaosDB.Entity.get_value(double_list_prop), Vector{Cdouble}) + @test isa(CaosDB.Entity.get_value(bool_list_prop), Vector{Bool}) + @test isa(CaosDB.Entity.get_value(string_list_prop), Vector{String}) + @test CaosDB.Entity.get_datatype(int_list_prop) == ("INTEGER", false, true) + @test CaosDB.Entity.get_datatype(double_list_prop) == ("DOUBLE", false, true) + @test CaosDB.Entity.get_datatype(bool_list_prop) == ("BOOLEAN", false, true) + @test CaosDB.Entity.get_datatype(string_list_prop) == ("TEXT", false, true) + end end end -- GitLab