Skip to content

Commit 2e676b5

Browse files
committed
Merge branch 'niko/testset-tests' into integrationTests
2 parents 90a1a0e + 4f9c94e commit 2e676b5

File tree

6 files changed

+196
-36
lines changed

6 files changed

+196
-36
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package io.lionweb.lioncore.java.testset;
2+
3+
import io.lionweb.lioncore.java.language.Language;
4+
import io.lionweb.lioncore.java.serialization.JsonSerialization;
5+
import java.nio.file.Path;
6+
import org.junit.Before;
7+
8+
public abstract class ALanguageTestset extends ATestset {
9+
protected Language language;
10+
11+
public ALanguageTestset(Path path) {
12+
super(path);
13+
}
14+
15+
@Before
16+
public void loadLanguage() {
17+
this.language =
18+
loadLanguage(
19+
findIntegrationTests()
20+
.resolve("testset")
21+
.resolve("withLanguage")
22+
.resolve("myLang.language.json"));
23+
}
24+
25+
protected JsonSerialization getSerialization() {
26+
JsonSerialization result = JsonSerialization.getStandardSerialization();
27+
result.registerLanguage(this.language);
28+
result.enableDynamicNodes();
29+
return result;
30+
}
31+
}
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package io.lionweb.lioncore.java.testset;
2+
3+
import static org.junit.Assert.assertTrue;
4+
5+
import io.lionweb.lioncore.java.language.Language;
6+
import io.lionweb.lioncore.java.model.Node;
7+
import io.lionweb.lioncore.java.serialization.JsonSerialization;
8+
import io.lionweb.lioncore.java.utils.LanguageValidator;
9+
import java.io.File;
10+
import java.io.FileNotFoundException;
11+
import java.io.IOException;
12+
import java.nio.file.Files;
13+
import java.nio.file.Path;
14+
import java.nio.file.Paths;
15+
import java.util.List;
16+
import java.util.stream.Stream;
17+
import org.junit.runner.RunWith;
18+
import org.junit.runners.Parameterized;
19+
20+
@RunWith(Parameterized.class)
21+
public abstract class ATestset {
22+
protected final Path path;
23+
24+
public ATestset(Path path) {
25+
this.path = path;
26+
}
27+
28+
protected static Language loadLanguage(Path path) {
29+
Node firstNode = parse(path, JsonSerialization.getStandardSerialization()).iterator().next();
30+
assertTrue(firstNode.getClass().toString(), firstNode instanceof Language);
31+
Language result = (Language) firstNode;
32+
LanguageValidator.ensureIsValid(result);
33+
return result;
34+
}
35+
36+
protected static List<Node> parse(Path path, JsonSerialization serialization) {
37+
try {
38+
File myLangFile = path.toFile();
39+
List<Node> nodes = serialization.unserializeToNodes(myLangFile);
40+
return nodes;
41+
} catch (FileNotFoundException e) {
42+
throw new RuntimeException(e);
43+
}
44+
}
45+
46+
protected static Object[] collectJsonFiles(Path basePath) {
47+
try (Stream<Path> files = Files.walk(basePath)) {
48+
Object[] result =
49+
files.filter(Files::isRegularFile).filter(f -> f.toString().endsWith(".json")).toArray();
50+
return result;
51+
} catch (IOException e) {
52+
throw new RuntimeException(e);
53+
}
54+
}
55+
56+
protected static Path findIntegrationTests() {
57+
String propertyValue = System.getenv("integrationTestingDir");
58+
if (propertyValue != null) {
59+
return Paths.get(propertyValue);
60+
}
61+
throw new IllegalArgumentException("environment variable integrationTestingDir not defined.");
62+
}
63+
}

core/src/integrationTest/java/io/lionweb/lioncore/java/testset/Invalid.java

Lines changed: 9 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -2,58 +2,31 @@
22

33
import static org.junit.Assert.assertThrows;
44

5-
import io.lionweb.lioncore.java.model.Node;
65
import io.lionweb.lioncore.java.serialization.JsonSerialization;
7-
import java.io.IOException;
8-
import java.nio.file.Files;
96
import java.nio.file.Path;
10-
import java.nio.file.Paths;
11-
import java.util.List;
127
import org.junit.Test;
138
import org.junit.runner.RunWith;
149
import org.junit.runners.Parameterized;
1510

1611
@RunWith(Parameterized.class)
17-
public class Invalid {
18-
private final Path path;
19-
12+
public class Invalid extends ATestset {
2013
@Parameterized.Parameters
2114
public static Object[] inputFiles() {
2215
Path integrationTests = findIntegrationTests();
23-
Path basePath = integrationTests.resolve("invalid");
24-
try {
25-
Object[] result =
26-
Files.walk(basePath)
27-
.filter(Files::isRegularFile)
28-
.filter(f -> f.toString().endsWith(".json"))
29-
.toArray();
30-
return result;
31-
} catch (IOException e) {
32-
throw new RuntimeException(e);
33-
}
16+
Path basePath = integrationTests.resolve("testset").resolve("invalid");
17+
Object[] result = collectJsonFiles(basePath);
18+
return result;
3419
}
3520

3621
public Invalid(Path path) {
37-
this.path = path;
22+
super(path);
3823
}
3924

4025
@Test
4126
public void assertInvalid() {
4227
assertThrows(
43-
path.toString(),
44-
RuntimeException.class,
45-
() -> {
46-
List<Node> nodes =
47-
JsonSerialization.getStandardSerialization().unserializeToNodes(path.toFile());
48-
System.out.println(nodes);
49-
});
50-
}
51-
52-
private static Path findIntegrationTests() {
53-
String propertyValue = System.getenv("lionwebTestSet");
54-
if (propertyValue != null) {
55-
return Paths.get(propertyValue);
56-
}
57-
throw new IllegalArgumentException("system variable lionwebTestSet not defined.");
28+
path.toString(),
29+
RuntimeException.class,
30+
() -> System.out.println(parse(path, JsonSerialization.getStandardSerialization())));
5831
}
59-
}
32+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package io.lionweb.lioncore.java.testset;
2+
3+
import static org.junit.Assert.assertThrows;
4+
5+
import java.nio.file.Path;
6+
import org.junit.Test;
7+
import org.junit.runner.RunWith;
8+
import org.junit.runners.Parameterized;
9+
10+
@RunWith(Parameterized.class)
11+
public class InvalidWithLanguage extends ALanguageTestset {
12+
@Parameterized.Parameters
13+
public static Object[] inputFiles() {
14+
Path integrationTests = findIntegrationTests();
15+
Path basePath = integrationTests.resolve("testset").resolve("withLanguage").resolve("invalid");
16+
Object[] result = collectJsonFiles(basePath);
17+
return result;
18+
}
19+
20+
public InvalidWithLanguage(Path path) {
21+
super(path);
22+
}
23+
24+
@Test
25+
public void assertInvalid() {
26+
assertThrows(
27+
path.toString(),
28+
RuntimeException.class,
29+
() -> System.out.println(parse(path, getSerialization())));
30+
}
31+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package io.lionweb.lioncore.java.testset;
2+
3+
import static org.junit.Assert.assertFalse;
4+
5+
import io.lionweb.lioncore.java.model.Node;
6+
import java.nio.file.Path;
7+
import java.util.List;
8+
import org.junit.Test;
9+
import org.junit.runner.RunWith;
10+
import org.junit.runners.Parameterized;
11+
12+
@RunWith(Parameterized.class)
13+
public class Valid extends ALanguageTestset {
14+
@Parameterized.Parameters
15+
public static Object[] inputFiles() {
16+
Path integrationTests = findIntegrationTests();
17+
Path basePath = integrationTests.resolve("testset").resolve("valid");
18+
Object[] result = collectJsonFiles(basePath);
19+
return result;
20+
}
21+
22+
public Valid(Path path) {
23+
super(path);
24+
}
25+
26+
@Test
27+
public void assertValid() {
28+
List<Node> nodes = parse(path, getSerialization());
29+
assertFalse(path.toString(), nodes.isEmpty());
30+
}
31+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package io.lionweb.lioncore.java.testset;
2+
3+
import static org.junit.Assert.assertFalse;
4+
5+
import io.lionweb.lioncore.java.model.Node;
6+
import java.nio.file.Path;
7+
import java.util.List;
8+
import org.junit.Test;
9+
import org.junit.runner.RunWith;
10+
import org.junit.runners.Parameterized;
11+
12+
@RunWith(Parameterized.class)
13+
public class ValidWithLanguage extends ALanguageTestset {
14+
@Parameterized.Parameters
15+
public static Object[] inputFiles() {
16+
Path integrationTests = findIntegrationTests();
17+
Path basePath = integrationTests.resolve("testset").resolve("withLanguage").resolve("valid");
18+
Object[] result = collectJsonFiles(basePath);
19+
return result;
20+
}
21+
22+
public ValidWithLanguage(Path path) {
23+
super(path);
24+
}
25+
26+
@Test
27+
public void assertValid() {
28+
List<Node> nodes = parse(path, getSerialization());
29+
assertFalse(path.toString(), nodes.isEmpty());
30+
}
31+
}

0 commit comments

Comments
 (0)