def test_iterators(self): kp = Parameters(json_string) #iteration by range nitems = 0 for iterator in kp: nitems = nitems + 1 self.assertEqual(nitems, 5) #iteration by items for key, value in kp.items(): #print(value.PrettyPrintJsonString()) self.assertEqual(kp[key].PrettyPrintJsonString(), value.PrettyPrintJsonString()) #print(key,value) #testing values expected_values = [ '10', '2.0', 'true', '"hello"', '{"list_value":[3,"hi",false],"tmp":5.0}' ] counter = 0 for value in kp.values(): self.assertEqual(value.WriteJsonString(), expected_values[counter]) counter += 1 #testing values expected_keys = [ 'int_value', 'double_value', 'bool_value', 'string_value', 'level1' ] counter = 0 for key in kp.keys(): self.assertEqual(key, expected_keys[counter]) counter += 1
def test_is_methods(self): # This method checks all the "IsXXX" Methods tmp = Parameters( """{ "int_value" : 10, "double_value": 2.0, "bool_value" : true, "string_value" : "hello", "vector_value" : [5,3,4], "matrix_value" : [[1,2],[3,6]] }""" ) # if you add more values to this, make sure to add the corresponding in the loop for key in tmp.keys(): val_type = key[:-6] # removing "_value" if val_type == "int": self.assertTrue(tmp[key].IsInt()) else: self.assertFalse(tmp[key].IsInt()) if val_type == "double": self.assertTrue(tmp[key].IsDouble()) else: self.assertFalse(tmp[key].IsDouble()) if val_type == "bool": self.assertTrue(tmp[key].IsBool()) else: self.assertFalse(tmp[key].IsBool()) if val_type == "string": self.assertTrue(tmp[key].IsString()) else: self.assertFalse(tmp[key].IsString()) if val_type == "vector": self.assertTrue(tmp[key].IsVector()) else: self.assertFalse(tmp[key].IsVector()) if val_type == "matrix": self.assertTrue(tmp[key].IsMatrix()) else: self.assertFalse(tmp[key].IsMatrix())
def test_is_methods(self): # This method checks all the "IsXXX" Methods tmp = Parameters( """{ "int_value" : 10, /* This is comment to check that comments work */ "double_value": 2.0, // This is comment too, but using another comment "bool_value" : true, // This is another comment being meta as realizing that all the possibilities are already check "string_value" : "hello",/* This is a nihilist comment about the futile existence of the previous comment as a metacomment */ "vector_value" : [5,3,4], "matrix_value" : [[1,2],[3,6]] }""" ) # if you add more values to this, make sure to add the corresponding in the loop for key in tmp.keys(): val_type = key[:-6] # removing "_value" if val_type == "int": self.assertTrue(tmp[key].IsInt()) else: self.assertFalse(tmp[key].IsInt()) if val_type == "double": self.assertTrue(tmp[key].IsDouble()) else: self.assertFalse(tmp[key].IsDouble()) if val_type == "bool": self.assertTrue(tmp[key].IsBool()) else: self.assertFalse(tmp[key].IsBool()) if val_type == "string": self.assertTrue(tmp[key].IsString()) else: self.assertFalse(tmp[key].IsString()) if val_type == "vector": self.assertTrue(tmp[key].IsVector()) else: self.assertFalse(tmp[key].IsVector()) if val_type == "matrix": self.assertTrue(tmp[key].IsMatrix()) else: self.assertFalse(tmp[key].IsMatrix())
def test_get_methods(self): # This method checks all the "GetXXX" Methods if they throw an error tmp = Parameters( """{ "int_value" : 10, "double_value": 2.0, "bool_value" : true, "string_value" : "hello", "vector_value" : [5.2,-3.1,4.33], "matrix_value" : [[1,2],[3,4],[5,6]] }""" ) # if you add more values to this, make sure to add the corresponding in the loop for key in tmp.keys(): val_type = key[:-6] # removing "_value" # Int and Double are checked tgth bcs both internally call "IsNumber" if val_type == "int" or val_type == "double": if val_type == "int": self.assertEqual(tmp[key].GetInt(), 10) else: with self.assertRaises(RuntimeError): tmp[key].GetInt() if val_type == "double" or val_type == "int": if val_type == "double": self.assertEqual(tmp[key].GetDouble(), 2.0) else: with self.assertRaises(RuntimeError): tmp[key].GetDouble() if val_type == "bool": self.assertEqual(tmp[key].GetBool(), True) else: with self.assertRaises(RuntimeError): tmp[key].GetBool() if val_type == "string": self.assertEqual(tmp[key].GetString(), "hello") else: with self.assertRaises(RuntimeError): tmp[key].GetString() if val_type == "vector": V = tmp[key].GetVector() self.assertEqual(V[0], 5.2) self.assertEqual(V[1], -3.1) self.assertEqual(V[2], 4.33) else: with self.assertRaises(RuntimeError): tmp[key].GetVector() if val_type == "matrix": A = tmp[key].GetMatrix() self.assertEqual(A[0, 0], 1.0) self.assertEqual(A[0, 1], 2.0) self.assertEqual(A[1, 0], 3.0) self.assertEqual(A[1, 1], 4.0) self.assertEqual(A[2, 0], 5.0) self.assertEqual(A[2, 1], 6.0) else: with self.assertRaises(RuntimeError): tmp[key].GetMatrix()
def test_set_methods(self): # This method checks all the "GetXXX" Methods if they throw an error tmp = Parameters( """{ "int_value" : 0, "double_value": 0.0, "bool_value" : false, "string_value" : "", "vector_value" : [], "matrix_value" : [[0]] }""" ) # if you add more values to this, make sure to add the corresponding in the loop for key in tmp.keys(): val_type = key[:-6] # removing "_value" # Int and Double are checked tgth bcs both internally call "IsNumber" if val_type == "int" or val_type == "double": if val_type == "int": tmp[key].SetInt(10) self.assertEqual(tmp[key].GetInt(), 10) else: with self.assertRaises(RuntimeError): tmp[key].GetInt() if val_type == "double" or val_type == "int": if val_type == "double": tmp[key].SetDouble(2.0) self.assertEqual(tmp[key].GetDouble(), 2.0) else: with self.assertRaises(RuntimeError): tmp[key].GetDouble() if val_type == "bool": tmp[key].SetBool(True) self.assertEqual(tmp[key].GetBool(), True) else: with self.assertRaises(RuntimeError): tmp[key].GetBool() if val_type == "string": tmp[key].SetString("hello") self.assertEqual(tmp[key].GetString(), "hello") else: with self.assertRaises(RuntimeError): tmp[key].GetString() if val_type == "vector": vector = Vector(3) vector[0] = 5.2 vector[1] = -3.1 vector[2] = 4.33 tmp[key].SetVector(vector) V = tmp[key].GetVector() self.assertEqual(V[0], 5.2) self.assertEqual(V[1], -3.1) self.assertEqual(V[2], 4.33) else: with self.assertRaises(RuntimeError): tmp[key].GetVector() if val_type == "matrix": matrix = Matrix(3, 2) matrix[0, 0] = 1.0 matrix[0, 1] = 2.0 matrix[1, 0] = 3.0 matrix[1, 1] = 4.0 matrix[2, 0] = 5.0 matrix[2, 1] = 6.0 tmp[key].SetMatrix(matrix) A = tmp[key].GetMatrix() self.assertEqual(A[0, 0], 1.0) self.assertEqual(A[0, 1], 2.0) self.assertEqual(A[1, 0], 3.0) self.assertEqual(A[1, 1], 4.0) self.assertEqual(A[2, 0], 5.0) self.assertEqual(A[2, 1], 6.0) else: with self.assertRaises(RuntimeError): tmp[key].GetMatrix()