tests: improvements to monitor-mapping test
Add some tests that specify different numbers of client monitors to
ensure that the parsing handles those situations correctly.
Signed-off-by: Jonathon Jongsma <jjongsma@redhat.com>
Acked-by: Pavel Grunt <pgrunt@redhat.com>
Jonathon Jongsma
6 years ago
35 | 35 | * Returns: %TRUE if the mapping is valid |
36 | 36 | */ |
37 | 37 | static gboolean |
38 | is_valid_monitor_mapping(const gchar *mapping) | |
38 | is_valid_monitor_mapping(const gchar *mapping, gint nmonitors) | |
39 | 39 | { |
40 | 40 | GKeyFile *key_file; |
41 | 41 | gboolean valid; |
42 | const gint nmonitors = 4; | |
43 | 42 | const gchar *group_name = "test-monitor-mapping"; |
44 | 43 | const gchar *key = "monitor-mapping"; |
45 | 44 | const gchar *key_data_fmt = "[%s]\n%s=%s\n"; |
66 | 65 | int main(void) |
67 | 66 | { |
68 | 67 | /* valid monitor mappings */ |
69 | g_assert_true(is_valid_monitor_mapping("1:1")); | |
70 | g_assert_true(is_valid_monitor_mapping("1:1;2:2")); | |
71 | g_assert_true(is_valid_monitor_mapping("1:1;2:2;3:3;")); | |
72 | g_assert_true(is_valid_monitor_mapping("1:2;2:1;3:3;4:4")); | |
73 | g_assert_true(is_valid_monitor_mapping("4:1;3:2;2:3;1:4")); | |
68 | g_assert_true(is_valid_monitor_mapping("1:1", 4)); | |
69 | g_assert_true(is_valid_monitor_mapping("1:1;2:2", 4)); | |
70 | g_assert_true(is_valid_monitor_mapping("1:1;2:2;3:3;", 4)); | |
71 | g_assert_true(is_valid_monitor_mapping("1:2;2:1;3:3;4:4", 4)); | |
72 | g_assert_true(is_valid_monitor_mapping("4:1;3:2;2:3;1:4", 4)); | |
74 | 73 | |
75 | 74 | /* invalid monitors mappings */ |
76 | 75 | /* zero ids */ |
77 | g_assert_false(is_valid_monitor_mapping("0:0")); | |
76 | g_assert_false(is_valid_monitor_mapping("0:0", 4)); | |
78 | 77 | /* negative guest display id */ |
79 | g_assert_false(is_valid_monitor_mapping("-1:1")); | |
78 | g_assert_false(is_valid_monitor_mapping("-1:1", 4)); | |
80 | 79 | /* negative client monitor id */ |
81 | g_assert_false(is_valid_monitor_mapping("1:-1")); | |
80 | g_assert_false(is_valid_monitor_mapping("1:-1", 4)); | |
82 | 81 | /* negative guest display & client monitor id */ |
83 | g_assert_false(is_valid_monitor_mapping("-1:-1")); | |
82 | g_assert_false(is_valid_monitor_mapping("-1:-1", 4)); | |
84 | 83 | /* high guest display id */ |
85 | g_assert_false(is_valid_monitor_mapping("100:1")); | |
84 | g_assert_false(is_valid_monitor_mapping("100:1", 4)); | |
86 | 85 | /* high client monitor id */ |
87 | g_assert_false(is_valid_monitor_mapping("1:100")); | |
86 | g_assert_false(is_valid_monitor_mapping("1:100", 4)); | |
88 | 87 | /* missing guest display id */ |
89 | g_assert_false(is_valid_monitor_mapping("1:1;3:3")); | |
88 | g_assert_false(is_valid_monitor_mapping("1:1;3:3", 4)); | |
90 | 89 | /* guest display id used twice */ |
91 | g_assert_false(is_valid_monitor_mapping("1:1;1:2")); | |
90 | g_assert_false(is_valid_monitor_mapping("1:1;1:2", 4)); | |
92 | 91 | /* client monitor id used twice */ |
93 | g_assert_false(is_valid_monitor_mapping("1:1;2:1")); | |
92 | g_assert_false(is_valid_monitor_mapping("1:1;2:1", 4)); | |
94 | 93 | /* floating point guest display id */ |
95 | g_assert_false(is_valid_monitor_mapping("1.111:1")); | |
94 | g_assert_false(is_valid_monitor_mapping("1.111:1", 4)); | |
96 | 95 | /* floating point client monitor id */ |
97 | g_assert_false(is_valid_monitor_mapping("1:1.111")); | |
96 | g_assert_false(is_valid_monitor_mapping("1:1.111", 4)); | |
98 | 97 | /* empty mapping */ |
99 | g_assert_false(is_valid_monitor_mapping("")); | |
100 | g_assert_false(is_valid_monitor_mapping(";")); | |
98 | g_assert_false(is_valid_monitor_mapping("", 4)); | |
99 | g_assert_false(is_valid_monitor_mapping(";", 4)); | |
101 | 100 | /* missing guest display id */ |
102 | g_assert_false(is_valid_monitor_mapping(":1")); | |
101 | g_assert_false(is_valid_monitor_mapping(":1", 4)); | |
103 | 102 | /* missing client monitor id */ |
104 | g_assert_false(is_valid_monitor_mapping("1:")); | |
103 | g_assert_false(is_valid_monitor_mapping("1:", 4)); | |
105 | 104 | /* missing guest display & client monitor id */ |
106 | g_assert_false(is_valid_monitor_mapping(":")); | |
105 | g_assert_false(is_valid_monitor_mapping(":", 4)); | |
107 | 106 | /*missing colon */ |
108 | g_assert_false(is_valid_monitor_mapping("11")); | |
107 | g_assert_false(is_valid_monitor_mapping("11", 4)); | |
109 | 108 | /*missing semicolon */ |
110 | g_assert_false(is_valid_monitor_mapping("1:12:2")); | |
109 | g_assert_false(is_valid_monitor_mapping("1:12:2", 4)); | |
111 | 110 | /* strings */ |
112 | g_assert_false(is_valid_monitor_mapping("1:a")); | |
113 | g_assert_false(is_valid_monitor_mapping("a:1")); | |
114 | g_assert_false(is_valid_monitor_mapping("a:a")); | |
115 | g_assert_false(is_valid_monitor_mapping("monitor mapping")); | |
111 | g_assert_false(is_valid_monitor_mapping("1:a", 4)); | |
112 | g_assert_false(is_valid_monitor_mapping("a:1", 4)); | |
113 | g_assert_false(is_valid_monitor_mapping("a:a", 4)); | |
114 | g_assert_false(is_valid_monitor_mapping("monitor mapping", 4)); | |
115 | ||
116 | /* not enough available monitors */ | |
117 | g_assert_false(is_valid_monitor_mapping("1:1;2:2", 1)); | |
118 | g_assert_false(is_valid_monitor_mapping("1:1;2:2;3:3;", 2)); | |
119 | g_assert_false(is_valid_monitor_mapping("1:2;2:1;3:3;4:4", 3)); | |
120 | ||
121 | /* nmonitors==0 should not be a valid argument */ | |
122 | g_assert_false(is_valid_monitor_mapping("1:1", 0)); | |
116 | 123 | |
117 | 124 | return 0; |
118 | 125 | } |