Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #define GETTEXT_DOMAIN "wesnoth-test"
00017
00018 #include <boost/test/unit_test.hpp>
00019
00020 #include <boost/test/unit_test_suite.hpp>
00021
00022
00023 #include "dialogs.hpp"
00024 #include "key.hpp"
00025 #include "filesystem.hpp"
00026 #include "savegame.hpp"
00027 #include "unit_types.hpp"
00028
00029
00030 #include "SDL.h"
00031
00032 #include "tests/utils/fake_event_source.hpp"
00033 #include "tests/utils/fake_display.hpp"
00034 #include "tests/utils/auto_parameterized.hpp"
00035
00036
00037
00038
00039 namespace test {
00040
00041 struct save_dialog_fixture {
00042 save_dialog_fixture()
00043 : source()
00044 {
00045 }
00046 test_utils::fake_event_source source;
00047 };
00048
00049
00050
00051 BOOST_FIXTURE_TEST_SUITE( save_dialog , save_dialog_fixture)
00052
00053 SDLKey fake_input_keys[] = {SDLK_KP_ENTER, SDLK_RETURN, SDLK_ESCAPE, SDLK_a};
00054
00055 WESNOTH_PARAMETERIZED_TEST_CASE( test_fake_input, SDLKey,fake_input_keys, keyid)
00056 {
00057 test_utils::event_node_ptr new_keypress = source.press_key(2, keyid);
00058 test_utils::event_node_ptr new_keyrelease = source.release_key(4,keyid);
00059
00060
00061 source.press_key(6, keyid);
00062 source.release_key(8,keyid);
00063 CKey key;
00064
00065 while(true)
00066 {
00067 events::pump();
00068
00069 BOOST_CHECK_EQUAL(key[keyid], new_keypress->is_fired());
00070 if (key[keyid])
00071 break;
00072 }
00073 while(true)
00074 {
00075 events::pump();
00076 BOOST_CHECK_EQUAL(key[keyid], !new_keyrelease->is_fired());
00077 if (!key[keyid])
00078 break;
00079 }
00080 }
00081
00082 SDLKey dialog_get_save_name_enter_pressed[] = {SDLK_KP_ENTER, SDLK_RETURN};
00083
00084 WESNOTH_PARAMETERIZED_TEST_CASE( test_dialog_get_save_name_enter_pressed, SDLKey, dialog_get_save_name_enter_pressed, keyid )
00085 {
00086
00087 test_utils::event_node_ptr press_return_before = source.press_key(0, keyid);
00088 test_utils::event_node_ptr release_return_before = source.release_key(3, keyid);
00089 test_utils::event_node_ptr press_return_after = source.press_key(5, keyid);
00090 test_utils::event_node_ptr release_return_after = source.release_key(7, keyid);
00091
00092
00093 source.press_key(10, keyid);
00094 source.release_key(13, keyid);
00095
00096 std::string fname("test_save");
00097 write_file(get_saves_dir() + "/" + fname +".gz", "böö");
00098
00099
00100
00101 events::pump();
00102
00103 BOOST_CHECK_MESSAGE(press_return_before->is_fired(), "Enter wasn't activated");
00104 BOOST_CHECK_MESSAGE(!release_return_before->is_fired(), "Enter was released before test");
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126 remove((get_saves_dir() + "/" + fname + ".gz").c_str());
00127 }
00128
00129 BOOST_AUTO_TEST_SUITE_END()
00130 }