1/*
2 * Copyright 2017, Andrew Lindesay <apl@lindesay.co.nz>
3 * Distributed under the terms of the MIT License.
4 */
5#ifndef JSON_ERROR_HANDLING_TEST_H
6#define JSON_ERROR_HANDLING_TEST_H
7
8
9#include <TestCase.h>
10#include <TestSuite.h>
11
12#include <DataIO.h>
13
14class Sample;
15
16
17class JsonErrorHandlingTest : public CppUnit::TestCase {
18public:
19								JsonErrorHandlingTest();
20	virtual						~JsonErrorHandlingTest();
21
22			void				TestCompletelyUnknown();
23			void				TestObjectWithPrematureSeparator();
24
25			void				TestStringUnterminated();
26
27			void				TestBadStringEscape();
28
29			void				TestBadNumber();
30
31			void				TestIOIssue();
32
33	static	void				AddTests(BTestSuite& suite);
34private:
35			void				TestParseWithUnexpectedCharacter(
36									const char* input, int32 line,
37									status_t expectedStatus, char expectedChar);
38
39			void				TestParseWithUnterminatedElement(
40									const char* input, int32 line,
41									status_t expectedStatus);
42
43			void				TestParseWithBadStringEscape(
44									const char* input,
45									int32 line, status_t expectedStatus,
46									char expectedBadEscapeChar);
47
48			void				TestParseWithErrorMessage(
49									const char* input, int32 line,
50									status_t expectedStatus,
51									const char* expectedMessage);
52
53			void				TestParseWithErrorMessage(
54									BDataIO* data, int32 line,
55									status_t expectedStatus,
56									const char* expectedMessage);
57
58};
59
60
61#endif	// JSON_ERROR_HANDLING_TEST_H
62