Skip to content

Commit d70ff44

Browse files
committed
update csv test with new csv columns
Signed-off-by: David BRAQUART <[email protected]>
1 parent 737e6ec commit d70ff44

File tree

8 files changed

+172
-157
lines changed

8 files changed

+172
-157
lines changed

src/test/java/org/gridsuite/securityanalysis/server/SecurityAnalysisControllerTest.java

Lines changed: 24 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@
7575
import static org.gridsuite.securityanalysis.server.service.SecurityAnalysisService.COMPUTATION_TYPE;
7676
import static org.gridsuite.securityanalysis.server.util.DatabaseQueryUtils.assertRequestsCount;
7777
import static org.gridsuite.securityanalysis.server.util.TestUtils.assertLogMessage;
78+
import static org.gridsuite.securityanalysis.server.util.TestUtils.readLinesFromFilePath;
7879
import static org.hamcrest.MatcherAssert.assertThat;
7980
import static org.junit.jupiter.api.Assertions.*;
8081
import static org.mockito.ArgumentMatchers.any;
@@ -512,7 +513,7 @@ private void checkNResultEnumFilters(UUID resultUuid) throws Exception {
512513
List<LimitViolationType> limitTypes = mapper.readValue(mvcResult.getResponse().getContentAsString(), new TypeReference<>() { });
513514
Assertions.assertThat(limitTypes).hasSameElementsAs(expectedLimitTypes);
514515

515-
List<ThreeSides> expectedSides = nResults.stream().map(result -> result.getLimitViolation().getSide()).distinct().filter(side -> side != null).toList();
516+
List<ThreeSides> expectedSides = nResults.stream().map(result -> result.getLimitViolation().getSide()).distinct().filter(Objects::nonNull).toList();
516517
mvcResult = mockMvc.perform(get("/" + VERSION + "/results/{resultUuid}/n-branch-sides", resultUuid))
517518
.andExpectAll(
518519
status().isOk(),
@@ -835,7 +836,7 @@ void getDefaultProviderTest() throws Exception {
835836

836837
@Test
837838
void getZippedCsvResults() throws Exception {
838-
// running computation to create result
839+
// running computation to create some results
839840
MvcResult mvcResult = mockMvc.perform(post("/" + VERSION + "/networks/" + NETWORK_UUID + "/run-and-save?reportType=SecurityAnalysis&contingencyListName=" + CONTINGENCY_LIST_NAME
840841
+ "&receiver=me&variantId=" + VARIANT_2_ID + "&provider=OpenLoadFlow" + "&loadFlowParametersUuid=" + UUID.randomUUID())
841842
.header(HEADER_USER_ID, "testUserId")
@@ -856,14 +857,15 @@ void getZippedCsvResults() throws Exception {
856857
checkAllZippedCsvResults();
857858
}
858859

860+
private List<String> getCsvHeaderFromResource(String resourcePath, String lang) {
861+
List<String> lines = readLinesFromFilePath(resourcePath, 1);
862+
String header = lines.isEmpty() ? "" : lines.getFirst();
863+
return Arrays.asList(header.strip().split("en".equalsIgnoreCase(lang) ? "," : ";"));
864+
}
865+
859866
private void checkAllZippedCsvResults() throws Exception {
860867
SQLStatementCountValidator.reset();
861-
checkZippedCsvResult("n-result", "/results/n-result-en.csv",
862-
CsvTranslationDTO.builder()
863-
.headers(List.of("Equipment", "Violation type", "Limit name", "Limit value (A or kV)", "Calculated value (A or kV)", "Load (%)", "Overload", "Side"))
864-
.enumValueTranslations(ENUM_TRANSLATIONS_EN)
865-
.language("en")
866-
.build());
868+
checkZippedCsvResult("n-result", "/results/n-result-en.csv", "en");
867869
/*
868870
* SELECT
869871
* assert result exists
@@ -872,20 +874,11 @@ private void checkAllZippedCsvResults() throws Exception {
872874
assertRequestsCount(2, 0, 0, 0);
873875

874876
SQLStatementCountValidator.reset();
875-
checkZippedCsvResult("n-result", "/results/n-result-fr.csv",
876-
CsvTranslationDTO.builder()
877-
.headers(List.of("Ouvrage", "Type de contrainte", "Nom du seuil", "Valeur du seuil (A ou kV)", "Valeur calculée (A ou kV)", "Charge (%)", "Surcharge", "Côté"))
878-
.enumValueTranslations(ENUM_TRANSLATIONS_FR)
879-
.language("fr")
880-
.build());
877+
checkZippedCsvResult("n-result", "/results/n-result-fr.csv", "fr");
881878

882879
SQLStatementCountValidator.reset();
883-
checkZippedCsvResult("nmk-contingencies-result", "/results/nmk-contingencies-result-en.csv",
884-
CsvTranslationDTO.builder()
885-
.headers(List.of("Contingency ID", "Status", "Constraint", "Bus", "Violation type", "Limit name", "Limit value (A or kV)", "Calculated value (A or kV)", "Load (%)", "Overload", "Side"))
886-
.enumValueTranslations(ENUM_TRANSLATIONS_EN)
887-
.language("en")
888-
.build());
880+
checkZippedCsvResult("nmk-contingencies-result", "/results/nmk-contingencies-result-en.csv", "en");
881+
889882
/*
890883
* SELECT
891884
* assert result exists
@@ -896,21 +889,11 @@ private void checkAllZippedCsvResults() throws Exception {
896889
assertRequestsCount(4, 0, 0, 0);
897890

898891
SQLStatementCountValidator.reset();
899-
checkZippedCsvResult("nmk-contingencies-result", "/results/nmk-contingencies-result-fr.csv",
900-
CsvTranslationDTO.builder()
901-
.headers(List.of("Id aléa", "Statut", "Contrainte", "Noeud électrique", "Type de contrainte", "Nom du seuil", "Valeur du seuil (A ou kV)", "Charge (%)", "Surcharge", "Côté"))
902-
.enumValueTranslations(ENUM_TRANSLATIONS_FR)
903-
.language("fr")
904-
.build());
892+
checkZippedCsvResult("nmk-contingencies-result", "/results/nmk-contingencies-result-fr.csv", "fr");
905893
assertRequestsCount(4, 0, 0, 0);
906894

907895
SQLStatementCountValidator.reset();
908-
checkZippedCsvResult("nmk-constraints-result", "/results/nmk-constraints-result-en.csv",
909-
CsvTranslationDTO.builder()
910-
.headers(List.of("Constraint", "Contingency ID", "Status", "Bus", "Violation type", "Limit name", "Limit value (A or kV)", "Calculated value (A or kV)", "Load (%)", "Overload", "Side"))
911-
.enumValueTranslations(ENUM_TRANSLATIONS_EN)
912-
.language("en")
913-
.build());
896+
checkZippedCsvResult("nmk-constraints-result", "/results/nmk-constraints-result-en.csv", "en");
914897
/*
915898
* SELECT
916899
* assert result exists
@@ -921,16 +904,17 @@ private void checkAllZippedCsvResults() throws Exception {
921904
assertRequestsCount(4, 0, 0, 0);
922905

923906
SQLStatementCountValidator.reset();
924-
checkZippedCsvResult("nmk-constraints-result", "/results/nmk-constraints-result-fr.csv",
925-
CsvTranslationDTO.builder()
926-
.headers(List.of("Contrainte", "ID aléa", "Statut", "Noeud électrique", "Type de contrainte", "Nom du seuil", "Valeur du seuil (A ou kV)", "Valeur calculée (A ou kV)", "Charge (%)", "Surcharge", "Côté"))
927-
.enumValueTranslations(ENUM_TRANSLATIONS_FR)
928-
.language("fr")
929-
.build());
907+
checkZippedCsvResult("nmk-constraints-result", "/results/nmk-constraints-result-fr.csv", "fr");
930908
assertRequestsCount(4, 0, 0, 0);
931909
}
932910

933-
private void checkZippedCsvResult(String resultType, String resourcePath, CsvTranslationDTO csvTranslationDTO) throws Exception {
911+
private void checkZippedCsvResult(String resultType, String resourcePath, String lang) throws Exception {
912+
CsvTranslationDTO csvTranslationDTO = CsvTranslationDTO.builder()
913+
.headers(getCsvHeaderFromResource(resourcePath, lang))
914+
.enumValueTranslations("en".equalsIgnoreCase(lang) ? ENUM_TRANSLATIONS_EN : ENUM_TRANSLATIONS_FR)
915+
.language(lang)
916+
.build();
917+
934918
// get csv file
935919
byte[] resultAsByteArray = mockMvc.perform(post("/" + VERSION + "/results/" + RESULT_UUID + "/" + resultType + "/csv")
936920
.contentType(MediaType.APPLICATION_JSON)
@@ -948,7 +932,6 @@ private void checkZippedCsvResult(String resultType, String resourcePath, CsvTra
948932
ZipEntry zipEntry = zin.getNextEntry();
949933
// check zip entry name
950934
assertEquals(CsvExportUtils.CSV_RESULT_FILE_NAME, zipEntry.getName());
951-
952935
// get entry content as outputStream
953936
StreamUtils.copy(zin, contentOutputStream);
954937

@@ -957,7 +940,7 @@ private void checkZippedCsvResult(String resultType, String resourcePath, CsvTra
957940
StreamUtils.copy(csvStream, expectedContentOutputStream);
958941

959942
// using bytearray comparison to check BOM presence in CSV files
960-
Assertions.assertThat(expectedContentOutputStream.toByteArray()).isEqualTo(contentOutputStream.toByteArray());
943+
Assertions.assertThat(contentOutputStream.toByteArray()).isEqualTo(expectedContentOutputStream.toByteArray());
961944
zin.closeEntry();
962945
}
963946
}

src/test/java/org/gridsuite/securityanalysis/server/util/TestUtils.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,16 @@
55
import org.apache.commons.text.StringSubstitutor;
66
import org.mockito.ArgumentCaptor;
77

8+
import java.io.BufferedReader;
9+
import java.io.IOException;
10+
import java.io.InputStream;
11+
import java.io.InputStreamReader;
12+
import java.nio.file.Files;
13+
import java.nio.file.Path;
14+
import java.nio.file.Paths;
15+
import java.util.ArrayList;
816
import java.util.Iterator;
17+
import java.util.List;
918
import java.util.Optional;
1019
import java.util.UUID;
1120

@@ -59,4 +68,27 @@ private static Optional<String> getMessageFromReporter(String reportKey, ReportN
5968
private static String formatReportMessage(ReportNode report, ReportNode reporterModel) {
6069
return new StringSubstitutor(reporterModel.getValues()).replace(new StringSubstitutor(report.getValues()).replace(report.getMessageTemplate()));
6170
}
71+
72+
public static List<String> readLinesFromFilePath(String resourceFileName, int nbLines) {
73+
final String utf8Bom = "\uFEFF";
74+
List<String> lines = new ArrayList<>();
75+
try {
76+
Path resourceFilePath = Paths.get("src", "test", "resources", resourceFileName);
77+
InputStream inputStream = Files.newInputStream(resourceFilePath);
78+
try (BufferedReader br = new BufferedReader(new InputStreamReader(inputStream))) {
79+
String line;
80+
int lineCount = 0;
81+
while ((line = br.readLine()) != null && (nbLines == -1 || lineCount < nbLines)) {
82+
if (lineCount == 0 && line.startsWith(utf8Bom)) {
83+
line = line.substring(utf8Bom.length()); // skip BOM
84+
}
85+
lines.add(line);
86+
lineCount++;
87+
}
88+
}
89+
} catch (IOException ex) {
90+
return List.of();
91+
}
92+
return lines;
93+
}
6294
}
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Equipment,Violation type,Limit name,Limit value (A or kV),Calculated value (A or kV),Load (%),Overload,Side
2-
,Current,l3_name,10,11,110,,Side 1
3-
,Current,l6_name,10,11,110,1200,Side 1
4-
"vl1 (VLGEN_0, VLLOAD_0)",High voltage,IST,400,410,,0,
1+
Equipment,Violation type,Bus,Limit name,Load (% limit),Load (% PATL),Actual overload,Upcoming overload,Next limit name,Limit (A or kV),PATL (A),Calculated value (A or kV),Side
2+
l3,Current,,l3_name,110,,,,,10,,11,Side 1
3+
l6,Current,,l6_name,110,,1200,,,10,,11,Side 1
4+
vl1,High voltage,"vl1 (VLGEN_0, VLLOAD_0)",IST,,,0,,,400,,410,
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Ouvrage;Type de contrainte;Nom du seuil;Valeur du seuil (A ou kV);Valeur calculée (A ou kV);Charge (%);Surcharge;Côté
2-
;Intensité;l3_name;10;11;110;;Côté 1
3-
;Intensité;l6_name;10;11;110;1200;Côté 1
4-
vl1 (VLGEN_0, VLLOAD_0);Tension haute;IST;400;410;;0;
1+
Ouvrage;Type de contrainte;Noeud électrique;Nom de la limite;Charge (% limite);Charge (% IST);Tempo effective;Tempo imminente;Nom de la limite suivante;Limite (A ou kV);IST (A);Valeur calculée (A ou kV);Côté
2+
l3;Intensité;;l3_name;110;;;;;10;;11;Côté 1
3+
l6;Intensité;;l6_name;110;;1200;;;10;;11;Côté 1
4+
vl1;Tension haute;vl1 (VLGEN_0, VLLOAD_0);IST;;;0;;;400;;410;
Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
1-
Constraint,Contingency ID,Status,Bus,Violation type,Limit name,Limit value (A or kV),Calculated value (A or kV),Load (%),Overload,Side
2-
l3,l1,Converged,,Current,l3_name,10,11,110,,Side 1
3-
l3,l2,Converged,,Current,l3_name,10,11,110,,Side 1
4-
l3,l3,Converged,,Current,l3_name,10,11,110,,Side 1
5-
l3,l4,Converged,,Current,l3_name,10,11,110,,Side 1
6-
l3,l6,Converged,,Current,l3_name,10,11,110,,Side 1
7-
l3,l7,Converged,,Current,l3_name,10,11,110,,Side 1
8-
l3,l8,Converged,,Current,l3_name,10,11,110,,Side 1
9-
l3,l9,Converged,,Current,l3_name,10,11,110,,Side 1
10-
l3,la,Converged,,Current,l3_name,10,11,110,,Side 1
11-
l3,lb,Converged,,Current,l3_name,10,11,110,,Side 1
12-
vl1,l1,Converged,"vl1 (VLGEN_0, VLLOAD_0)",High voltage,IST,400,410,,0,
13-
vl1,l2,Converged,"vl1 (VLGEN_0, VLLOAD_0)",High voltage,IST,400,410,,0,
14-
vl1,l3,Converged,"vl1 (VLGEN_0, VLLOAD_0)",High voltage,IST,400,410,,0,
15-
vl1,l4,Converged,"vl1 (VLGEN_0, VLLOAD_0)",High voltage,IST,400,410,,0,
16-
vl1,l6,Converged,"vl1 (VLGEN_0, VLLOAD_0)",High voltage,IST,400,410,,0,
17-
vl1,l7,Converged,"vl1 (VLGEN_0, VLLOAD_0)",High voltage,IST,400,410,,0,
18-
vl1,l8,Converged,"vl1 (VLGEN_0, VLLOAD_0)",High voltage,IST,400,410,,0,
19-
vl1,l9,Converged,"vl1 (VLGEN_0, VLLOAD_0)",High voltage,IST,400,410,,0,
20-
vl1,la,Converged,"vl1 (VLGEN_0, VLLOAD_0)",High voltage,IST,400,410,,0,
21-
vl1,lb,Converged,"vl1 (VLGEN_0, VLLOAD_0)",High voltage,IST,400,410,,0,
22-
l6,f1,Failed,,Current,l6_name,10,11,110,1200,Side 1
23-
l6,f2,Failed,,Current,l6_name,10,11,110,1200,Side 1
24-
l6,f3,Failed,,Current,l6_name,10,11,110,1200,Side 1
25-
vl7,f1,Failed,vl7,High voltage,vl7_name,400,410,,0,
26-
vl7,f2,Failed,vl7,High voltage,vl7_name,400,410,,0,
27-
vl7,f3,Failed,vl7,High voltage,vl7_name,400,410,,0,
1+
Equipment,Contingency,Status,Violation type,Bus,Limit name,Load (% limit),Load (% PATL),Actual overload,Upcoming overload,Next limit name,Limit (A or kV),PATL (A),Calculated value (A or kV),Side
2+
l3,l1,Converged,Current,,l3_name,110,,,,,10,,11,Side 1
3+
l3,l2,Converged,Current,,l3_name,110,,,,,10,,11,Side 1
4+
l3,l3,Converged,Current,,l3_name,110,,,,,10,,11,Side 1
5+
l3,l4,Converged,Current,,l3_name,110,,,,,10,,11,Side 1
6+
l3,l6,Converged,Current,,l3_name,110,,,,,10,,11,Side 1
7+
l3,l7,Converged,Current,,l3_name,110,,,,,10,,11,Side 1
8+
l3,l8,Converged,Current,,l3_name,110,,,,,10,,11,Side 1
9+
l3,l9,Converged,Current,,l3_name,110,,,,,10,,11,Side 1
10+
l3,la,Converged,Current,,l3_name,110,,,,,10,,11,Side 1
11+
l3,lb,Converged,Current,,l3_name,110,,,,,10,,11,Side 1
12+
vl1,l1,Converged,High voltage,"vl1 (VLGEN_0, VLLOAD_0)",IST,,,0,,,400,,410,
13+
vl1,l2,Converged,High voltage,"vl1 (VLGEN_0, VLLOAD_0)",IST,,,0,,,400,,410,
14+
vl1,l3,Converged,High voltage,"vl1 (VLGEN_0, VLLOAD_0)",IST,,,0,,,400,,410,
15+
vl1,l4,Converged,High voltage,"vl1 (VLGEN_0, VLLOAD_0)",IST,,,0,,,400,,410,
16+
vl1,l6,Converged,High voltage,"vl1 (VLGEN_0, VLLOAD_0)",IST,,,0,,,400,,410,
17+
vl1,l7,Converged,High voltage,"vl1 (VLGEN_0, VLLOAD_0)",IST,,,0,,,400,,410,
18+
vl1,l8,Converged,High voltage,"vl1 (VLGEN_0, VLLOAD_0)",IST,,,0,,,400,,410,
19+
vl1,l9,Converged,High voltage,"vl1 (VLGEN_0, VLLOAD_0)",IST,,,0,,,400,,410,
20+
vl1,la,Converged,High voltage,"vl1 (VLGEN_0, VLLOAD_0)",IST,,,0,,,400,,410,
21+
vl1,lb,Converged,High voltage,"vl1 (VLGEN_0, VLLOAD_0)",IST,,,0,,,400,,410,
22+
l6,f1,Failed,Current,,l6_name,110,,1200,,,10,,11,Side 1
23+
l6,f2,Failed,Current,,l6_name,110,,1200,,,10,,11,Side 1
24+
l6,f3,Failed,Current,,l6_name,110,,1200,,,10,,11,Side 1
25+
vl7,f1,Failed,High voltage,vl7,vl7_name,,,0,,,400,,410,
26+
vl7,f2,Failed,High voltage,vl7,vl7_name,,,0,,,400,,410,
27+
vl7,f3,Failed,High voltage,vl7,vl7_name,,,0,,,400,,410,
Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
1-
Contrainte;ID aléa;Statut;Noeud électrique;Type de contrainte;Nom du seuil;Valeur du seuil (A ou kV);Valeur calculée (A ou kV);Charge (%);Surcharge;Côté
2-
l3;l1;Convergence;;Intensité;l3_name;10;11;110;;Côté 1
3-
l3;l2;Convergence;;Intensité;l3_name;10;11;110;;Côté 1
4-
l3;l3;Convergence;;Intensité;l3_name;10;11;110;;Côté 1
5-
l3;l4;Convergence;;Intensité;l3_name;10;11;110;;Côté 1
6-
l3;l6;Convergence;;Intensité;l3_name;10;11;110;;Côté 1
7-
l3;l7;Convergence;;Intensité;l3_name;10;11;110;;Côté 1
8-
l3;l8;Convergence;;Intensité;l3_name;10;11;110;;Côté 1
9-
l3;l9;Convergence;;Intensité;l3_name;10;11;110;;Côté 1
10-
l3;la;Convergence;;Intensité;l3_name;10;11;110;;Côté 1
11-
l3;lb;Convergence;;Intensité;l3_name;10;11;110;;Côté 1
12-
vl1;l1;Convergence;vl1 (VLGEN_0, VLLOAD_0);Tension haute;IST;400;410;;0;
13-
vl1;l2;Convergence;vl1 (VLGEN_0, VLLOAD_0);Tension haute;IST;400;410;;0;
14-
vl1;l3;Convergence;vl1 (VLGEN_0, VLLOAD_0);Tension haute;IST;400;410;;0;
15-
vl1;l4;Convergence;vl1 (VLGEN_0, VLLOAD_0);Tension haute;IST;400;410;;0;
16-
vl1;l6;Convergence;vl1 (VLGEN_0, VLLOAD_0);Tension haute;IST;400;410;;0;
17-
vl1;l7;Convergence;vl1 (VLGEN_0, VLLOAD_0);Tension haute;IST;400;410;;0;
18-
vl1;l8;Convergence;vl1 (VLGEN_0, VLLOAD_0);Tension haute;IST;400;410;;0;
19-
vl1;l9;Convergence;vl1 (VLGEN_0, VLLOAD_0);Tension haute;IST;400;410;;0;
20-
vl1;la;Convergence;vl1 (VLGEN_0, VLLOAD_0);Tension haute;IST;400;410;;0;
21-
vl1;lb;Convergence;vl1 (VLGEN_0, VLLOAD_0);Tension haute;IST;400;410;;0;
22-
l6;f1;Echec;;Intensité;l6_name;10;11;110;1200;Côté 1
23-
l6;f2;Echec;;Intensité;l6_name;10;11;110;1200;Côté 1
24-
l6;f3;Echec;;Intensité;l6_name;10;11;110;1200;Côté 1
25-
vl7;f1;Echec;vl7;Tension haute;vl7_name;400;410;;0;
26-
vl7;f2;Echec;vl7;Tension haute;vl7_name;400;410;;0;
27-
vl7;f3;Echec;vl7;Tension haute;vl7_name;400;410;;0;
1+
Ouvrage;Aléa;Statut;Type de contrainte;Noeud électrique;Nom de la limite;Charge (% limite);Charge (% IST);Tempo effective;Tempo imminente;Nom de la limite suivante;Limite (A ou kV);IST (A);Valeur calculée (A ou kV);Côté
2+
l3;l1;Convergence;Intensité;;l3_name;110;;;;;10;;11;Côté 1
3+
l3;l2;Convergence;Intensité;;l3_name;110;;;;;10;;11;Côté 1
4+
l3;l3;Convergence;Intensité;;l3_name;110;;;;;10;;11;Côté 1
5+
l3;l4;Convergence;Intensité;;l3_name;110;;;;;10;;11;Côté 1
6+
l3;l6;Convergence;Intensité;;l3_name;110;;;;;10;;11;Côté 1
7+
l3;l7;Convergence;Intensité;;l3_name;110;;;;;10;;11;Côté 1
8+
l3;l8;Convergence;Intensité;;l3_name;110;;;;;10;;11;Côté 1
9+
l3;l9;Convergence;Intensité;;l3_name;110;;;;;10;;11;Côté 1
10+
l3;la;Convergence;Intensité;;l3_name;110;;;;;10;;11;Côté 1
11+
l3;lb;Convergence;Intensité;;l3_name;110;;;;;10;;11;Côté 1
12+
vl1;l1;Convergence;Tension haute;vl1 (VLGEN_0, VLLOAD_0);IST;;;0;;;400;;410;
13+
vl1;l2;Convergence;Tension haute;vl1 (VLGEN_0, VLLOAD_0);IST;;;0;;;400;;410;
14+
vl1;l3;Convergence;Tension haute;vl1 (VLGEN_0, VLLOAD_0);IST;;;0;;;400;;410;
15+
vl1;l4;Convergence;Tension haute;vl1 (VLGEN_0, VLLOAD_0);IST;;;0;;;400;;410;
16+
vl1;l6;Convergence;Tension haute;vl1 (VLGEN_0, VLLOAD_0);IST;;;0;;;400;;410;
17+
vl1;l7;Convergence;Tension haute;vl1 (VLGEN_0, VLLOAD_0);IST;;;0;;;400;;410;
18+
vl1;l8;Convergence;Tension haute;vl1 (VLGEN_0, VLLOAD_0);IST;;;0;;;400;;410;
19+
vl1;l9;Convergence;Tension haute;vl1 (VLGEN_0, VLLOAD_0);IST;;;0;;;400;;410;
20+
vl1;la;Convergence;Tension haute;vl1 (VLGEN_0, VLLOAD_0);IST;;;0;;;400;;410;
21+
vl1;lb;Convergence;Tension haute;vl1 (VLGEN_0, VLLOAD_0);IST;;;0;;;400;;410;
22+
l6;f1;Echec;Intensité;;l6_name;110;;1200;;;10;;11;Côté 1
23+
l6;f2;Echec;Intensité;;l6_name;110;;1200;;;10;;11;Côté 1
24+
l6;f3;Echec;Intensité;;l6_name;110;;1200;;;10;;11;Côté 1
25+
vl7;f1;Echec;Tension haute;vl7;vl7_name;;;0;;;400;;410;
26+
vl7;f2;Echec;Tension haute;vl7;vl7_name;;;0;;;400;;410;
27+
vl7;f3;Echec;Tension haute;vl7;vl7_name;;;0;;;400;;410;

0 commit comments

Comments
 (0)