Mercurial > code
annotate C++/Tests/Ini/main.cpp @ 325:d52a69f9f029
Add Ini, brand new replacement for Parser
author | David Demelier <markand@malikania.fr> |
---|---|
date | Sat, 28 Feb 2015 18:53:27 +0100 |
parents | |
children | fb6c42173634 |
rev | line source |
---|---|
325
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 /* |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
2 * main.cpp -- main test file for Ini |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 * |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
4 * Copyright (c) 2013, 2014 David Demelier <markand@malikania.fr> |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 * |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 * Permission to use, copy, modify, and/or distribute this software for any |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 * purpose with or without fee is hereby granted, provided that the above |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 * copyright notice and this permission notice appear in all copies. |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 * |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 */ |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
19 #include <iostream> |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
20 |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 #include <gtest/gtest.h> |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
22 |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
23 #include <Ini.h> |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
24 |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
25 class BasicTest : public testing::Test { |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
26 protected: |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
27 Ini m_ini; |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
28 |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
29 public: |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
30 BasicTest() |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
31 : m_ini(std::ifstream("simple.conf")) |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
32 { |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
33 } |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
34 |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
35 }; |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
36 |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
37 TEST_F(BasicTest, simple) |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
38 { |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
39 ASSERT_EQ(1, static_cast<int>(m_ini.size())); |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
40 } |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
41 |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
42 TEST_F(BasicTest, iniOperators) |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
43 { |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
44 try { |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
45 ASSERT_EQ(3, static_cast<int>(m_ini[0].size())); |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
46 ASSERT_EQ("general", m_ini[0].key()); |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
47 ASSERT_EQ("general", m_ini["general"].key()); |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
48 } catch (const std::exception &ex) { |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
49 FAIL() << ex.what(); |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
50 } |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
51 } |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
52 |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
53 TEST_F(BasicTest, iniSectionOperators) |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
54 { |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
55 try { |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
56 // option1=1 (indexes) |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
57 ASSERT_EQ("option1", m_ini[0][0].key()); |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
58 ASSERT_EQ("1", m_ini[0][0].value()); |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
59 |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
60 // option1=1 (keys) |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
61 ASSERT_EQ("option1", m_ini["general"]["option1"].key()); |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
62 ASSERT_EQ("1", m_ini["general"]["option1"].value()); |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
63 |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
64 // option2 =2 (indexes) |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
65 ASSERT_EQ("option2", m_ini[0][1].key()); |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
66 ASSERT_EQ("2", m_ini[0][1].value()); |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
67 |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
68 // option2 =2 (keys) |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
69 ASSERT_EQ("option2", m_ini["general"]["option2"].key()); |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
70 ASSERT_EQ("2", m_ini["general"]["option2"].value()); |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
71 |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
72 // option3 = 3 (indexes) |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
73 ASSERT_EQ("option3", m_ini[0][2].key()); |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
74 ASSERT_EQ("3", m_ini[0][2].value()); |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
75 |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
76 // option3 = 3 (keys) |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
77 ASSERT_EQ("option3", m_ini["general"]["option3"].key()); |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
78 ASSERT_EQ("3", m_ini["general"]["option3"].value()); |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
79 } catch (const std::exception &ex) { |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
80 FAIL() << ex.what(); |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
81 } |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
82 } |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
83 |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
84 |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
85 int main(int argc, char **argv) |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
86 { |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
87 testing::InitGoogleTest(&argc, argv); |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
88 |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
89 return RUN_ALL_TESTS(); |
d52a69f9f029
Add Ini, brand new replacement for Parser
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
90 } |