Skip to content

Commit c02ac8d

Browse files
Kimmo Linnavuod471061c
authored andcommitted
Add new tests for QmakePlugin
Rename test cases for QmakeStudentFilePolicy Add test for QmakePlugin
1 parent d49adc3 commit c02ac8d

File tree

67 files changed

+776
-36
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+776
-36
lines changed

tmc-langs-qmake/src/test/java/fi/helsinki/cs/tmc/langs/qmake/QmakePluginTest.java

Lines changed: 88 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
import fi.helsinki.cs.tmc.langs.domain.ExerciseDesc;
88
import fi.helsinki.cs.tmc.langs.domain.RunResult;
9+
import fi.helsinki.cs.tmc.langs.domain.TestDesc;
910
import fi.helsinki.cs.tmc.langs.utils.TestUtils;
1011

1112
import com.google.common.base.Optional;
@@ -14,7 +15,6 @@
1415

1516
import java.nio.file.Path;
1617

17-
1818
public class QmakePluginTest {
1919

2020
private final QmakePlugin qmakePlugin;
@@ -29,39 +29,104 @@ public void testGetLanguageName() {
2929
}
3030

3131
@Test
32-
public void testQtBuildFailingWithNoLib() {
33-
assertEquals(RunResult.Status.PASSED, runTests("passing_nolib"));
32+
public void testQtTestsPassingWithNoLib() {
33+
assertEquals("Tests passing with no library",
34+
RunResult.Status.PASSED,
35+
runTests("passing_nolib"));
36+
}
37+
38+
@Test
39+
public void testQtTestsPassingWithNoLibSamePoints() {
40+
assertEquals("Tests passing with no library and same points",
41+
RunResult.Status.PASSED,
42+
runTests("passing_nolib_same_point"));
43+
}
44+
45+
@Test
46+
public void testQtTestsPassingWithMultipleLib() {
47+
assertEquals("Tests passing with multiple libraries",
48+
RunResult.Status.PASSED,
49+
runTests("passing_multiple_lib"));
3450
}
3551

3652
@Test
3753
public void testQtBuildFailingWithSingleLib() {
38-
assertEquals("Failing compile with single lib",
54+
assertEquals("Student source not compiling with compiling single lib",
3955
RunResult.Status.COMPILE_FAILED,
4056
runTests("failing_compile_single_lib_compiling"));
4157
}
4258

59+
@Test
60+
public void testQtFailingSingleLib() {
61+
assertEquals("Tests failing with single library",
62+
RunResult.Status.TESTS_FAILED,
63+
runTests("failing_single_lib"));
64+
}
65+
4366
@Test
4467
public void testQtLibBuildFailing() {
45-
assertEquals(RunResult.Status.COMPILE_FAILED, runTests("failing_single_lib_not_compiling"));
68+
assertEquals("Student source compiling with library not compiling ",
69+
RunResult.Status.COMPILE_FAILED,
70+
runTests("failing_single_lib_not_compiling"));
4671
}
4772

4873
@Test
4974
public void testQTestsFailingNoLib() {
50-
assertEquals(RunResult.Status.TESTS_FAILED, runTests("failing_nolib"));
75+
assertEquals("Tests fail with no library",
76+
RunResult.Status.TESTS_FAILED,
77+
runTests("failing_nolib"));
5178
}
5279

5380
@Test
5481
public void testQtTestsPassingSingleLib() {
55-
assertEquals(RunResult.Status.PASSED, runTests("passing_single_lib"));
82+
assertEquals("Tests pass with single library",
83+
RunResult.Status.PASSED,
84+
runTests("passing_single_lib"));
5685
}
5786

5887
@Test
5988
public void testQtTestsFailingNoLibSamePoints() {
60-
assertEquals("Failing no library",
89+
assertEquals("Failing suite test with no library",
6190
RunResult.Status.TESTS_FAILED,
6291
runTests("failing_nolib_same_point"));
6392
}
6493

94+
@Test
95+
public void testQtTestsInvalidProFile() {
96+
assertEquals("Invalid .pro file does not compile",
97+
RunResult.Status.COMPILE_FAILED,
98+
runTests("invalid_pro_file"));
99+
}
100+
101+
@Test
102+
public void testScanInvalidMakefileExercise() {
103+
Optional<ExerciseDesc> optional = scanExercise("makefile");
104+
assertFalse(optional.isPresent());
105+
}
106+
107+
@Test
108+
public void testScanExerciseWithPassingSamePoints() {
109+
Optional<ExerciseDesc> optional = scanExercise("passing_single_lib");
110+
assertTrue(optional.isPresent());
111+
112+
ExerciseDesc desc = optional.get();
113+
114+
assertEquals("passing_single_lib", desc.name);
115+
116+
assertEquals(2, desc.tests.size());
117+
TestDesc test1 = desc.tests.get(1);
118+
TestDesc test2 = desc.tests.get(0);
119+
120+
assertEquals("test_function_one_here", test1.name);
121+
assertEquals("test_function_two_here", test2.name);
122+
123+
assertEquals(1, test1.points.size());
124+
assertEquals("1", test1.points.get(0));
125+
126+
assertEquals(1, test2.points.size());
127+
assertEquals("2", test2.points.get(0));
128+
}
129+
65130
@Test
66131
public void testScanExerciseWithFailingSamePoints() {
67132
Optional<ExerciseDesc> optional = scanExercise("failing_single_lib_same_point");
@@ -72,10 +137,21 @@ public void testScanExerciseWithFailingSamePoints() {
72137
assertEquals("failing_single_lib_same_point", desc.name);
73138

74139
assertEquals(3, desc.tests.size());
75-
assertEquals("test_function_two_here", desc.tests.get(0).name);
140+
TestDesc test2 = desc.tests.get(0);
141+
TestDesc test21 = desc.tests.get(1);
142+
TestDesc test1 = desc.tests.get(2);
143+
144+
assertEquals("test_function_one_here", test1.name);
145+
assertEquals("test_function_two_here", test2.name);
146+
assertEquals("test_function_two_here_2", test21.name);
76147

77-
assertEquals(1, desc.tests.get(0).points.size());
78-
assertEquals("2", desc.tests.get(0).points.get(0));
148+
assertEquals(1, test1.points.size());
149+
assertEquals(1, test2.points.size());
150+
assertEquals(1, test21.points.size());
151+
152+
assertEquals("1", test1.points.get(0));
153+
assertEquals("2", test2.points.get(0));
154+
assertEquals("1", test21.points.get(0));
79155
}
80156

81157
@Test
@@ -88,12 +164,12 @@ public void testIsExerciseTypeCorrect() {
88164
assertTrue(isExerciseTypeCorrect("passing_multiple_lib"));
89165
assertTrue(isExerciseTypeCorrect("passing_multiple_lib_same_point"));
90166

91-
assertTrue(isExerciseTypeCorrect("failing_single_lib_not_compiling"));
92167
assertTrue(isExerciseTypeCorrect("failing_nolib"));
93168
assertTrue(isExerciseTypeCorrect("failing_nolib_same_point"));
94169
assertTrue(isExerciseTypeCorrect("failing_single_lib"));
95170
assertTrue(isExerciseTypeCorrect("failing_single_lib_not_compiling"));
96171
assertTrue(isExerciseTypeCorrect("failing_single_lib_same_point"));
172+
assertFalse(isExerciseTypeCorrect("makefile"));
97173
assertFalse(isExerciseTypeCorrect(""));
98174
}
99175

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
package fi.helsinki.cs.tmc.langs.qmake;
2+
3+
import static org.junit.Assert.assertEquals;
4+
import static org.junit.Assert.assertFalse;
5+
import static org.junit.Assert.assertTrue;
6+
7+
import fi.helsinki.cs.tmc.langs.utils.TestUtils;
8+
9+
import org.junit.Before;
10+
import org.junit.Test;
11+
12+
import java.io.File;
13+
import java.io.IOException;
14+
import java.nio.file.Path;
15+
import java.util.ArrayList;
16+
import java.util.List;
17+
18+
public class QmakeStudentFilePolicyTest {
19+
20+
private Path singleLib;
21+
private QmakeStudentFilePolicy qmakeStudentFilePolicy;
22+
23+
private final String srcDir = "src" + File.separatorChar;
24+
private final String testDir = "test_case_test_runner" + File.separatorChar;
25+
private final String libDir = "test_case_lib" + File.separatorChar;
26+
27+
@Before
28+
public void setUp() {
29+
singleLib = TestUtils.getPath(getClass(), "passing_single_lib");
30+
qmakeStudentFilePolicy = new QmakeStudentFilePolicy(singleLib);
31+
}
32+
33+
@Test
34+
public void testMovesFilesInSrc() throws IOException {
35+
final List<String> toBeMoved = new ArrayList<>();
36+
37+
TestUtils.collectPaths(singleLib, toBeMoved, qmakeStudentFilePolicy);
38+
assertEquals(2, toBeMoved.size());
39+
40+
assertTrue(toBeMoved.contains(srcDir + "src.pro"));
41+
assertTrue(toBeMoved.contains(srcDir + "main.cpp"));
42+
}
43+
44+
@Test
45+
public void testDoesNotMoveFilesInTest() throws IOException {
46+
final List<String> toBeMoved = new ArrayList<>();
47+
48+
TestUtils.collectPaths(singleLib, toBeMoved, qmakeStudentFilePolicy);
49+
50+
assertEquals(2, toBeMoved.size());
51+
52+
assertFalse(toBeMoved.contains(testDir + "test_case_test_runner.pro"));
53+
assertFalse(toBeMoved.contains(testDir + "test_case_test_runner.cpp"));
54+
assertFalse(toBeMoved.contains(testDir + "test_case_test_runner.h"));
55+
assertFalse(toBeMoved.contains(testDir + "main.cpp"));
56+
}
57+
58+
@Test
59+
public void testDoesNotMoveFilesInLibrary() throws IOException {
60+
final List<String> toBeMoved = new ArrayList<>();
61+
62+
TestUtils.collectPaths(singleLib, toBeMoved, qmakeStudentFilePolicy);
63+
64+
assertEquals(2, toBeMoved.size());
65+
assertFalse(toBeMoved.contains(libDir + "test_case_lib.cpp"));
66+
assertFalse(toBeMoved.contains(libDir + "test_case_lib.h"));
67+
assertFalse(toBeMoved.contains(libDir + "test_case_lib.pro"));
68+
}
69+
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
TEMPLATE = subdirs
22
SUBDIRS += \
3-
test_case_app \
3+
src \
44
test_case_test_runner

tmc-langs-qmake/src/test/resources/failing_nolib/test_case_test_runner/test_case_test_runner.pro

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@ DEFINES += QT_DEPRECATED_WARNINGS
1212

1313
SOURCES += main.cpp \
1414
test_case_test_runner.cpp \
15-
$$PWD/../test_case_app/test_case_app.cpp
15+
$$PWD/../src/test_case_app.cpp
1616

1717
HEADERS += \
1818
test_case_test_runner.h
1919

20-
INCLUDEPATH += $$PWD/../test_case_app
20+
INCLUDEPATH += $$PWD/../src
2121

2222

0 commit comments

Comments
 (0)