def test_json_value_string_error(self): json_string = [u'"你好\n "', '"\uu0uu"', 'abc"', '"\r\n\t"'] for i in range(len(json_string)): json_reader = JsonReader(CharReader(json_string[i])) self.assertRaises(jsonerror.JsonParseError, json_reader.json_read) json_string2 = ['"', '" '] for i in range(len(json_string2)): json_reader = JsonReader(CharReader(json_string2[i])) self.assertRaises(jsonerror.JsonError, json_reader.json_read)
def test_json_value_number(self): json_number = ['0', '-1', '20', '2e-2', '-2.2E+3', '2.234e-5'] json_number_expected = [0, -1, 20, 0.02, -2200, 0.00002234] for i in range(len(json_number)): json_reader = JsonReader(CharReader(json_number[i])) self.assertAlmostEqual(json_reader.json_read(), json_number_expected[i])
def test_read_number(self): json_string = [ "1", "1e+10", "9e-10", "-2e+4", "-4e-6", "1.234", "12.34E+3", "-123.0E-2" ] expected_string = [ 1, 10000000000, 9e-10, -20000, -0.000004, 1.234, 12340, -1.23 ] for i in range(len(json_string)): token_reader = TokenReader(CharReader(json_string[i])) self.assertEqual(token_reader.read_number(), expected_string[i])
def test_json_value_string(self): json_string = [ '""', '"abc"', '" "', '"\t"', u'"你好\a"', '"\u4f60\u597d"', '"\u1234"' ] json_string_expected = [ '', 'abc', ' ', '\t', u'你好\a', u'你好', u'\u1234' ] for i in range(len(json_string)): json_reader = JsonReader(CharReader(json_string[i])) self.assertEqual(json_reader.json_read(), json_string_expected[i])
def test_next_token(self): json_string = ["{", '}', ":", ',', '[', ']', '1'] token_type_expect = [ TokenType.START_OBJ, TokenType.END_OBJ, TokenType.COLON, TokenType.COMMA, TokenType.START_LIST, TokenType.END_LIST, TokenType.NUMBER ] token_reader = TokenReader(CharReader(json_string)) for i in range(len(token_type_expect)): token_type = token_reader.read_next_token() self.assertEqual(token_type, token_type_expect[i], "TokenType not equal.")
def loads(self, s): """ load JSON from string Attributes: s -- JSON string """ char_reader = CharReader(s) self.json_reader = JsonReader(char_reader) try: self._data = self.json_reader.json_read() except jsonerror.JsonError as json_error: logging.exception(msg=json_error.message) raise json_error return self._data
def load_file(self, f): """ load JSON from file Attributes: f -- file_path """ with open(f, 'r') as json_file: json_string = json_file.read().decode('gbk') if json_string is None: raise jsonerror.JsonFileError('Open json file error.', 'In JsonParser:load_file.') char_reader = CharReader(json_string) self.json_reader = JsonReader(char_reader) try: self._data = self.json_reader.json_read() except jsonerror.JsonError as json_error: logging.exception(msg=json_error.message) raise json_error print self._data
def test_read_null(self): json_string = "null" expected_string = None token_reader = TokenReader(CharReader(json_string)) self.assertEqual(token_reader.read_null(), expected_string)
def test_read_bool(self): json_string = "true" expected_string = True token_reader = TokenReader(CharReader(json_string)) self.assertEqual(token_reader.read_bool(), expected_string)
def test_read_string(self): json_string = '"testing "' expected_string = "testing " token_reader = TokenReader(CharReader(json_string)) self.assertEqual(token_reader.read_string(), expected_string)
def test_json_value_bool(self): json_bool = ['true', 'false', 'true\n \r', 'false\t \r'] json_bool_expected = [True, False, True, False] for i in range(len(json_bool)): json_reader = JsonReader(CharReader(json_bool[i])) self.assertEqual(json_reader.json_read(), json_bool_expected[i])