@@ -60,4 +60,51 @@ def test_rename_feature(self):
60
60
self .assertTrue (self .api .feature_exists ("A" , self .name1 ))
61
61
self .assertTrue (self .api .feature_exists ("B" , self .name1 ))
62
62
with self .assertRaises (GBDException ):
63
- self .api .rename_feature ("A" , "B" , self .name1 )
63
+ self .api .rename_feature ("A" , "B" , self .name1 )
64
+
65
+ def test_set_values (self ):
66
+ self .api .create_feature ("A" , None , self .name1 ) # feature is multi-valued
67
+ self .api .create_feature ("B" , "empty" , self .name1 ) # feature has default value
68
+ self .api .create_feature ("A" , "empty" , self .name2 ) # shadowed feature
69
+ # value1 (set values, default values emerge)
70
+ self .api .set_values ("A" , "value1" , [ str (i ) for i in range (100 ) ], self .name1 )
71
+ df = self .api .query ("A = value1" , resolve = ["A" , "B" ])
72
+ self .assertCountEqual (df ['hash' ].tolist (), [ str (i ) for i in range (100 ) ])
73
+ self .assertCountEqual (df ['A' ].tolist (), [ "value1" for _ in range (100 ) ])
74
+ self .assertCountEqual (df ['B' ].tolist (), [ "empty" for _ in range (100 ) ])
75
+ # value2 (set values, feature is multi-valued)
76
+ self .api .set_values ("A" , "value2" , [ str (i ) for i in range (50 ) ], self .name1 )
77
+ df = self .api .query ("A = value1 or A = value2" , resolve = ["A" ], collapse = None )
78
+ self .assertCountEqual (df ['A' ].tolist (), [ "value2" for _ in range (50 ) ] + [ "value1" for _ in range (100 ) ])
79
+ # value3 (set values of shadowed feature by specifying target-database)
80
+ self .api .set_values ("A" , "value3" , [ str (i ) for i in range (50 ) ], self .name2 )
81
+ df = self .api .query ("A = value1 or A = value2" , resolve = ["A" ], collapse = None )
82
+ self .assertCountEqual (df ['A' ].tolist (), [ "value2" for _ in range (50 ) ] + [ "value1" for _ in range (100 ) ])
83
+ self .api .database .commit ()
84
+ api2 = GBD ([self .file2 ])
85
+ df = api2 .query ("A = value3" , resolve = ["A" ])
86
+ self .assertCountEqual (df ["A" ].tolist (), [ "value3" for _ in range (50 ) ])
87
+
88
+ def test_reset_values (self ):
89
+ self .api .create_feature ("A" , None , self .name1 )
90
+ self .api .create_feature ("B" , "empty" , self .name1 )
91
+ self .api .create_feature ("A" , "empty" , self .name2 )
92
+ self .api .set_values ("A" , "value1" , [ str (i ) for i in range (100 ) ], self .name1 )
93
+ self .api .set_values ("A" , "value2" , [ str (i ) for i in range (100 ) ], self .name1 )
94
+ self .api .set_values ("B" , "value3" , [ str (i ) for i in range (100 ) ], self .name1 )
95
+ self .api .set_values ("A" , "value1" , [ str (i ) for i in range (100 ) ], self .name2 )
96
+ # reset values in A
97
+ self .api .reset_values ("A" , [ "value1" ], [ str (i ) for i in range (50 ) ], self .name1 )
98
+ df = self .api .query (None , hashes = [ str (i ) for i in range (100 ) ], resolve = ["A" ], collapse = None )
99
+ self .assertCountEqual (df ['A' ].tolist (), [ "value1" for _ in range (50 ) ] + [ "value2" for _ in range (100 ) ])
100
+ # reset values in B
101
+ self .api .reset_values ("B" , [ "value3" ], [ str (i ) for i in range (50 ) ], self .name1 )
102
+ df = self .api .query (None , hashes = [ str (i ) for i in range (100 ) ], resolve = ["B" ])
103
+ self .assertCountEqual (df ['B' ].tolist (), [ "value3" for _ in range (50 ) ] + [ "empty" for _ in range (50 ) ])
104
+ # reset values in shadowed A
105
+ self .api .database .verbose = True
106
+ self .api .reset_values ("A" , [ "value1" ], [ str (i ) for i in range (50 ) ], self .name2 )
107
+ self .api .database .commit ()
108
+ api2 = GBD ([self .file2 ])
109
+ df = api2 .query ("A = value1" , resolve = ["A" ])
110
+ self .assertCountEqual (df ["A" ].tolist (), [ "value1" for _ in range (50 ) ])
0 commit comments