diff --git a/test/runtests.jl b/test/runtests.jl
index 66b08bd87d55717710ead9fcf564f32a92abcdd7..b1054342fffb8809d5fe8fb1a112b717a1d6a8d1 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