Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
package de.featjar.formula.io;

import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Path;
import java.util.Arrays;

import de.featjar.base.FeatJAR;
import de.featjar.base.io.input.FileInputMapper;
import de.featjar.formula.VariableMap;
import de.featjar.formula.assignment.BooleanAssignmentList;
import de.featjar.formula.assignment.BooleanSolution;
import de.featjar.formula.io.csv.BooleanAssignmentListCSVFormat;

public class BooleanAssignmentListCSVFormatParserTest {
static BooleanAssignmentListCSVFormat csvFile;

@BeforeAll
public static void begin() {
FeatJAR.testConfiguration().initialize();
csvFile = new BooleanAssignmentListCSVFormat();
}

@AfterAll
public static void end() {
FeatJAR.deinitialize();
}

FileInputMapper csvSelect(String count) {
FileInputMapper file = null;
String relPath = "./src/testFixtures/resources/formats/csv/csv_";
relPath += count;
relPath += ".csv";

try {
Path path = Path.of(relPath);
file = new FileInputMapper(path, StandardCharsets.UTF_8);
} catch (IOException e) {

}

return file;
}



@Test
void csvTest_EmptyFile() {
var file = csvSelect("0");
var result = csvFile.parse(file);
assertTrue(result.isEmpty());
}

@Test
void csvTest_Positive1() {
var file = csvSelect("1");
var result = csvFile.parse(file);

assertEquals(result.get(), new BooleanAssignmentList(new VariableMap(Arrays.asList("A","B","C","D","E")),
Arrays.asList(new BooleanSolution(1,2,3,-4,-5), new BooleanSolution(1,-2,3,-4,-5), new BooleanSolution(-1,-2,3,-4,0), new BooleanSolution(1,2,3,4,5), new BooleanSolution(-1,-2,-3,4,5))));
}

@Test
void csvTest_Positive2() {
var file = csvSelect("2");
var result = csvFile.parse(file);
assertEquals(result.get(), new BooleanAssignmentList(new VariableMap(Arrays.asList("A","B","C")),
Arrays.asList(new BooleanSolution(1,2,3), new BooleanSolution(1,-2,-3), new BooleanSolution(1,-2,3))));
}

@Test
void csvtest_Positive3() {
var file = csvSelect("3");
var result = csvFile.parse(file);
assertEquals(result.get(), new BooleanAssignmentList(new VariableMap(Arrays.asList("A","B","C","D","E","F")),
Arrays.asList(new BooleanSolution(1,2,3,-4,-5,0), new BooleanSolution(1,-2,-3,4,5,0), new BooleanSolution(-1,-2,3,4,-5,0))));
}

@Test
void csvTest_Nonsense() {
var file = csvSelect("4");
var result = csvFile.parse(file);
assertTrue(result.hasProblems());
assertTrue(result.getProblems().get(0).getMessage().contains("First column name must be Configuration"));
}

@Test
void csvTest_ValueMismatch() {
var file = csvSelect("5");
var result = csvFile.parse(file);
assertTrue(result.hasProblems());
assertTrue(result.getProblems().get(0).getMessage().contains("Number of values"));
}

@Test
void csvTest_MissingRowConfig() {
var file = csvSelect("6");
var result = csvFile.parse(file);
assertTrue(result.hasProblems());
assertTrue(result.getProblems().get(0).getMessage().contains("First value must be"));
}

@Test
void csvTest_UnrecognisedValue() {
var file = csvSelect("7");
var result = csvFile.parse(file);
assertTrue(result.hasProblems());
assertTrue(result.getProblems().get(0).getMessage().contains("Unknown value"));
}

@Test
void csvTest_VariableMismatch() {
var file = csvSelect("8");
var result = csvFile.parse(file);
assertTrue(result.hasProblems());
assertTrue(result.getProblems().get(0).getMessage().contains("Number of values"));
}
}

1 change: 1 addition & 0 deletions src/testFixtures/resources/formats/csv/csv_0.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@

6 changes: 6 additions & 0 deletions src/testFixtures/resources/formats/csv/csv_1.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
Configuration;A;B;C;D;E;
1;+;+;+;-;-;
2;+;-;+;-;-;
3;-;-;+;-;0;
4;+;+;+;+;+;
5;-;-;-;+;+;
4 changes: 4 additions & 0 deletions src/testFixtures/resources/formats/csv/csv_2.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Configuration;A;B;C;
1;+;+;+;
2;+;-;-;
3;+;-;+;
4 changes: 4 additions & 0 deletions src/testFixtures/resources/formats/csv/csv_3.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Configuration;A;B;C;D;E;F;
1;+;+;+;-;-;0;
2;+;-;-;+;+;0;
3;-;-;+;+;-;0;
3 changes: 3 additions & 0 deletions src/testFixtures/resources/formats/csv/csv_4.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
kjbgaöhgöiah
akjghaköghöashg
aöskjghsKÖGHSJKÖBG
4 changes: 4 additions & 0 deletions src/testFixtures/resources/formats/csv/csv_5.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Configuration;A;B;C;D;E;F;
+;+;+;-;-;0;
+;-;-;+;+;0;
-;-;+;+;-;0;
4 changes: 4 additions & 0 deletions src/testFixtures/resources/formats/csv/csv_6.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Configuration;A;B;C;D;E;F;
1;+;+;+;-;-;0;
p;+;-;-;+;+;0;
3;-;-;+;+;-;0;
4 changes: 4 additions & 0 deletions src/testFixtures/resources/formats/csv/csv_7.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Configuration;A;B;C;D;E;F;
1;+;+;+;-;-;0;
2;+;-;-;<;+;0;
3;-;-;+;+;-;0;
4 changes: 4 additions & 0 deletions src/testFixtures/resources/formats/csv/csv_8.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Configuration;A;B;C;D;E;
1;+;+;+;-;-;0;
2;+;-;-;+;+;0;
3;-;-;+;+;-;0;