Merge lp:~dinko-metalac/sudoku-app/more-autopilot-tests into lp:sudoku-app

Proposed by Dinko Osmankovic
Status: Merged
Approved by: Dinko Osmankovic
Approved revision: 76
Merged at revision: 75
Proposed branch: lp:~dinko-metalac/sudoku-app/more-autopilot-tests
Merge into: lp:sudoku-app
Diff against target: 273 lines (+151/-82)
3 files modified
components/SudokuBlocksGrid.qml (+0/-1)
sudoku-app.qml (+87/-81)
tests/autopilot/sudoku_app/tests/test_sudoku.py (+64/-0)
To merge this branch: bzr merge lp:~dinko-metalac/sudoku-app/more-autopilot-tests
Reviewer Review Type Date Requested Status
Dinko Osmankovic Approve
Ubuntu Phone Apps Jenkins Bot continuous-integration Pending
Review via email: mp+174355@code.launchpad.net
To post a comment you must log in.
76. By Dinko Osmankovic <email address hidden>

Code cleanup

Revision history for this message
Dinko Osmankovic (dinko-metalac) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'components/SudokuBlocksGrid.qml'
2--- components/SudokuBlocksGrid.qml 2013-07-12 06:48:37 +0000
3+++ components/SudokuBlocksGrid.qml 2013-07-12 10:14:26 +0000
4@@ -40,7 +40,6 @@
5
6 // *************************************************
7
8-
9 ColorSchemeDefault {
10 id: colorScheme;
11 }
12
13=== modified file 'sudoku-app.qml'
14--- sudoku-app.qml 2013-07-12 06:48:37 +0000
15+++ sudoku-app.qml 2013-07-12 10:14:26 +0000
16@@ -216,71 +216,77 @@
17
18 page: Page {
19
20- tools: ToolbarActions {
21- Action {
22- text: i18n.tr("New game");
23- iconSource: Qt.resolvedUrl("icons/new_game_ubuntu.svg")
24- onTriggered: {
25- //print("new block distance:", blockDistance);
26- switch(difficultySelector.selectedIndex) {
27- case 0:
28- var randomnumber = Math.floor(Math.random()*9);
29- randomnumber += 31;
30- sudokuBlocksGrid.createNewGame(81 - randomnumber);
31- break;
32- case 1:
33- var randomnumber = Math.floor(Math.random()*4);
34- randomnumber += 26;
35- sudokuBlocksGrid.createNewGame(81 - randomnumber);
36- break;
37- case 2:
38- var randomnumber = Math.floor(Math.random()*4);
39- randomnumber += 21;
40- sudokuBlocksGrid.createNewGame(81 - randomnumber);
41- break;
42- case 3:
43- var randomnumber = Math.floor(Math.random()*3);
44- randomnumber += 17;
45- sudokuBlocksGrid.createNewGame(81 - randomnumber);
46- break;
47+ tools: ToolbarItems {
48+ ToolbarButton {
49+ objectName: "newgamebutton"
50+ action: Action {
51+ text: i18n.tr("New game");
52+ iconSource: Qt.resolvedUrl("icons/new_game_ubuntu.svg")
53+ onTriggered: {
54+ //print("new block distance:", blockDistance);
55+ switch(difficultySelector.selectedIndex) {
56+ case 0:
57+ var randomnumber = Math.floor(Math.random()*9);
58+ randomnumber += 31;
59+ sudokuBlocksGrid.createNewGame(81 - randomnumber);
60+ break;
61+ case 1:
62+ var randomnumber = Math.floor(Math.random()*4);
63+ randomnumber += 26;
64+ sudokuBlocksGrid.createNewGame(81 - randomnumber);
65+ break;
66+ case 2:
67+ var randomnumber = Math.floor(Math.random()*4);
68+ randomnumber += 21;
69+ sudokuBlocksGrid.createNewGame(81 - randomnumber);
70+ break;
71+ case 3:
72+ var randomnumber = Math.floor(Math.random()*3);
73+ randomnumber += 17;
74+ sudokuBlocksGrid.createNewGame(81 - randomnumber);
75+ break;
76+ }
77 }
78 }
79 }
80- Action {
81- iconSource: Qt.resolvedUrl("icons/hint.svg")
82- text: i18n.tr("Show hint");
83- enabled: disableHints.checked;
84- onTriggered: {
85- if(enabled)
86- {
87- sudokuBlocksGrid.revealHint();
88- sudokuBlocksGrid.checkIfCheating = true;
89- if (sudokuBlocksGrid.checkIfGameFinished()) {
90- gameFinishedRectangle.visible = true;
91- Settings.insertNewScore(currentUserId, sudokuBlocksGrid.calculateScore())
92- gameFinishedText.text = i18n.tr("You are a cheat... \nBut we give you\n")
93- + sudokuBlocksGrid.calculateScore()
94- + " " + i18n.tr("points.")
95-
96- print (sudokuBlocksGrid.numberOfActions)
97- print (sudokuBlocksGrid.numberOfHints)
98- print (sudokuBlocksGrid.gameSeconds)
99- print (sudokuBlocksGrid.gameDifficulty)
100- var allScores = Settings.getAllScores()
101- highscoresModel.clear();
102- highscoresHeaderText = i18n.tr("<b>Best scores for all players</b>");
103- for(var i = 0; i < allScores.length; i++) {
104- var rowItem = allScores[i];
105- //(print("ROW ",rowItem)
106- var firstName = Settings.getUserFirstName(rowItem[0]);
107- var lastName = Settings.getUserLastName(rowItem[0]);
108- //res.push([dbItem.first_name, dbItem.last_name, dbItem.score])
109- highscoresModel.append({'firstname': firstName,
110- 'lastname': lastName,
111- 'score': rowItem[1] });
112+ ToolbarButton {
113+ objectName: "hintbutton"
114+ action: Action {
115+ iconSource: Qt.resolvedUrl("icons/hint.svg")
116+ text: i18n.tr("Show hint");
117+ enabled: disableHints.checked;
118+ onTriggered: {
119+ if(enabled)
120+ {
121+ sudokuBlocksGrid.revealHint();
122+ sudokuBlocksGrid.checkIfCheating = true;
123+ if (sudokuBlocksGrid.checkIfGameFinished()) {
124+ gameFinishedRectangle.visible = true;
125+ Settings.insertNewScore(currentUserId, sudokuBlocksGrid.calculateScore())
126+ gameFinishedText.text = i18n.tr("You are a cheat... \nBut we give you\n")
127+ + sudokuBlocksGrid.calculateScore()
128+ + " " + i18n.tr("points.")
129+
130+ print (sudokuBlocksGrid.numberOfActions)
131+ print (sudokuBlocksGrid.numberOfHints)
132+ print (sudokuBlocksGrid.gameSeconds)
133+ print (sudokuBlocksGrid.gameDifficulty)
134+ var allScores = Settings.getAllScores()
135+ highscoresModel.clear();
136+ highscoresHeaderText = i18n.tr("<b>Best scores for all players</b>");
137+ for(var i = 0; i < allScores.length; i++) {
138+ var rowItem = allScores[i];
139+ //(print("ROW ",rowItem)
140+ var firstName = Settings.getUserFirstName(rowItem[0]);
141+ var lastName = Settings.getUserLastName(rowItem[0]);
142+ //res.push([dbItem.first_name, dbItem.last_name, dbItem.score])
143+ highscoresModel.append({'firstname': firstName,
144+ 'lastname': lastName,
145+ 'score': rowItem[1] });
146+ }
147+
148+ winTimer.restart();
149 }
150-
151- winTimer.restart();
152 }
153 }
154 }
155@@ -480,26 +486,26 @@
156
157
158
159- ListView {
160- id: manageProfileListView
161- clip: true
162- width: parent.width
163- height: mainColumnSettings.height
164- model: profilesModel
165-
166- delegate:
167-
168- ListItem.Standard {
169-
170- text: firstname + " " + lastname
171-
172- progression: true
173- onTriggered: {
174- hide()
175- editUserId = profileId
176- PopupUtils.open(manageProfileDialog, selectorProfile)
177- }
178- }
179+ ListView {
180+ id: manageProfileListView
181+ clip: true
182+ width: parent.width
183+ height: mainColumnSettings.height
184+ model: profilesModel
185+
186+ delegate:
187+
188+ ListItem.Standard {
189+
190+ text: firstname + " " + lastname
191+
192+ progression: true
193+ onTriggered: {
194+ hide()
195+ editUserId = profileId
196+ PopupUtils.open(manageProfileDialog, selectorProfile)
197+ }
198+ }
199
200
201
202
203=== modified file 'tests/autopilot/sudoku_app/tests/test_sudoku.py'
204--- tests/autopilot/sudoku_app/tests/test_sudoku.py 2013-07-11 22:02:26 +0000
205+++ tests/autopilot/sudoku_app/tests/test_sudoku.py 2013-07-12 10:14:26 +0000
206@@ -86,3 +86,67 @@
207
208 #check label again
209 self.assertThat(label, Eventually(Equals("<b>Best scores for all players</b>")))
210+
211+ def test_enter_and_cancel(self):
212+ #find the first button that has a blank value
213+ gridButtons = self.main_window.get_blank_inputs()
214+ gridButton = gridButtons[0]
215+
216+ #create a value function to check later using id
217+ buttonValue = lambda: self.app.select_single("QQuickText",id=gridButton.id).text
218+
219+ #double check that it's blank
220+ self.assertThat(buttonValue, Eventually(Equals("")))
221+
222+ #click the button
223+ self.pointing_device.click_object(gridButton)
224+
225+ #assert that we can see the input screen
226+ inputScreen = lambda: self.main_window.get_number_dialog()
227+ self.assertThat(inputScreen, Eventually(NotEquals(None)))
228+
229+ #set a value, choose 4
230+ dialogButton = self.main_window.get_dialog_button("4")
231+ self.assertThat(dialogButton, NotEquals(None))
232+ self.pointing_device.click_object(dialogButton)
233+
234+ #check the value to ensure it worked
235+ self.assertThat(buttonValue, Eventually(Equals("4")))
236+
237+ #click the button
238+ self.pointing_device.click_object(gridButton)
239+
240+ #assert that we can see the input screen
241+ inputScreen = lambda: self.main_window.get_number_dialog()
242+ self.assertThat(inputScreen, Eventually(NotEquals(None)))
243+
244+ #set a value, choose clear
245+ dialogButton = self.main_window.get_dialog_button("Cancel")
246+ self.assertThat(dialogButton, NotEquals(None))
247+ self.pointing_device.click_object(dialogButton)
248+
249+ #check the value to ensure it worked
250+ self.assertThat(buttonValue, Eventually(Equals("4")))
251+
252+ def test_new_game_button(self):
253+ self.ubuntusdk.click_toolbar_button("newgamebutton")
254+
255+ number_of_hints = lambda: self.app.select_single(objectName="blockgrid").numberOfHints
256+ number_of_actions = lambda: self.app.select_single(objectName="blockgrid").numberOfActions
257+ game_seconds = lambda: self.app.select_single(objectName="blockgrid").gameSeconds
258+
259+ self.assertThat(number_of_hints, Eventually(Equals(0)))
260+ self.assertThat(number_of_actions, Eventually(Equals(0)))
261+ self.assertThat(game_seconds, Eventually(Equals(0)))
262+
263+ def test_hint_button(self):
264+ self.ubuntusdk.click_toolbar_button("hintbutton")
265+ gridButtons = self.main_window.get_blank_inputs()
266+
267+ number_of_hints = lambda: self.app.select_single(objectName="blockgrid").numberOfHints
268+ self.assertThat(number_of_hints, Eventually(Equals(1)))
269+
270+
271+
272+
273+

Subscribers

People subscribed via source and target branches