Skip to content
Snippets Groups Projects
Commit 09e7f458 authored by Petr Ježek's avatar Petr Ježek
Browse files

dither aetg pairwise combinations gen

parent 3391eb93
No related branches found
No related tags found
No related merge requests found
......@@ -50,6 +50,7 @@
<artifactId>spring-boot-starter-web</artifactId>
<version>2.5.5</version>
</dependency>
<!-- Testing -->
<dependency>
<groupId>junit</groupId>
......@@ -58,6 +59,11 @@
<scope>test</scope>
</dependency>
<dependency>
<groupId>de.flapdoodle.embed</groupId>
<artifactId>de.flapdoodle.embed.mongo</artifactId>
</dependency>
<!-- Logging -->
<dependency>
<groupId>org.slf4j</groupId>
......@@ -72,12 +78,12 @@
<version>1.18.22</version>
</dependency>
<!-- PDF -->
<dependency>
<groupId>com.github.librepdf</groupId>
<artifactId>openpdf</artifactId>
<version>1.3.26</version>
<groupId>com.github.jesg</groupId>
<artifactId>dither</artifactId>
<version>0.2.0</version>
</dependency>
</dependencies>
<build>
......
package cz.cvut.fel.pro.emtt.service;
import com.github.jesg.dither.Dither;
import com.sun.istack.NotNull;
import cz.cvut.fel.pro.emtt.model.Question;
import cz.cvut.fel.pro.emtt.repository.QuestionRepository;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
@Service
@Slf4j
@AllArgsConstructor
public class QuestionService {
......@@ -19,4 +23,96 @@ public class QuestionService {
return Optional.of(repository.findAllQuestionsByTitle(title));
}
private void log2DArray(Object[][] array) {
log.info(Arrays.deepToString(array)
.replace("],","\n").replace(",","\t| ")
.replaceAll("[\\[\\]]", " "));
}
public void generateCases() {
// 2-way IPOG
Object[][] results2 = Dither.aetg(2, new Object[][]{
new Object[]{"3b_q1", "3b_q2"},
new Object[]{"3b_q4", "3b_q5", "3b_q6"},
new Object[]{"5b_q1", "5b_q2"},
new Object[]{"8b_q1", "8b_q2"}});
log2DArray(results2);
Object[][] results3 = Dither.aetg(2, 0, new Object[][]{
new Object[]{"3b_q1", "3b_q2"},
new Object[]{"3b_q4", "3b_q5", "3b_q6"},
new Object[]{"5b_q1", "5b_q2"},
new Object[]{"8b_q1", "8b_q2"}},
new Integer[][] {
},
results2);
log2DArray(results3);
Object[][] results4 = Dither.aetg(2, 0, new Object[][]{
new Object[]{"3b_q1", "3b_q2"},
new Object[]{"3b_q4", "3b_q5", "3b_q6"},
new Object[]{"5b_q1", "5b_q2"},
new Object[]{"8b_q1", "8b_q2"}},
new Integer[][] {
},
results3);
log2DArray(results4);
// 3-way IPOG
/*Object[][] results3 = Dither.ipog(3, new Object[][]{
new Object[]{0, 1},
new Object[]{0, 1},
new Object[]{true, false},
new Object[]{"cat", "dog", "bird"}},
null,
results2);
log2DArray(results3);*/
// 3-way IPOG with constraints and exclude previously tested cases
/*Object[][] results3constraints = Dither.ipog(3, new Object[][]{
new Object[]{0, 1},
new Object[]{0, 1},
new Object[]{true, false},
new Object[]{"cat", "dog", "bird"}},
new Integer[][]{
new Integer[]{null, null, 0, 1}}, // exclude true dog combination
new Object[][]{new Object[]{0, 0, true, "cat"}}); // previously tested cases
log2DArray(results3constraints);*/
// 3-way AETG with constraints and exclude previously tested cases
// AETG is a non-deterministic pairwise strategy
/*Object[][] resultsAetg = Dither.aetg(3,
0, // seed for random number generator, can be null
new Object[][]{
new Object[]{0, 1},
new Object[]{0, 1},
new Object[]{true, false},
new Object[]{"cat", "dog", "bird"}},
new Integer[][]{
new Integer[]{null, null, 0, 1}}, // exclude true dog combination
new Object[][]{new Object[]{0, 0, true, "cat"}}); // previously tested cases
log2DArray(resultsAetg);*/
}
/*@CombinatorialTest(inputParameterModel = "model")
@EnableGeneration(algorithms = Ipog.class )
public void test(
@InputParameter("c1_3b") String title,
@InputParameter("c2_3b") String firstName,
@InputParameter("c3_5b") String lastName) {
log.info("Generated test: {} {} {}", title, firstName, lastName);
}
@SuppressWarnings("unused")
private static InputParameterModel model() {
return inputParameterModel("questions-model")
.positiveTestingStrength(1)
.parameters(
parameter("c1_3b").values("q1", "q2", "q3"),
parameter("c2_3b").values("q4", "q5", "q6"),
parameter("c3_5b").values("q7", "q8", "q9"),
parameter("c4_8b").values("q10", "q11", "q12")
).build();
}*/
}
package cz.cvut.fel.pro.emtt;
import cz.cvut.fel.pro.emtt.service.QuestionService;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.mongo.embedded.EmbeddedMongoAutoConfiguration;
import org.springframework.boot.test.autoconfigure.data.mongo.DataMongoTest;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit.jupiter.SpringExtension;
@SpringBootTest
class AppTests {
@Autowired
private QuestionService qs;
@Test
void contextLoads() {
qs.generateCases();
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment