Skip to content

Commit 8c4c839

Browse files
committed
Add new unit tests for reader and writer to test reading models from more than one file and reading non ANSI utf-8 characters
Signed-off-by: Thomas Günther <[email protected]>
1 parent 494e643 commit 8c4c839

File tree

7 files changed

+343
-0
lines changed

7 files changed

+343
-0
lines changed

CGMES_2.4.15_27JAN2020/src/test/java/cim4j/utils/RdfReaderTest.java

+159
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,165 @@ void testRead007() {
305305
assertEquals(baseVoltage, voltageLevel.getAttribute("BaseVoltage"));
306306
}
307307

308+
@Test
309+
@Order(180)
310+
void testRead008_EQ_TP() {
311+
var cimData = RdfReader.read(List.of(getPath("rdf/test008_EQ.xml"), getPath("rdf/test008_TP.xml")));
312+
assertEquals(2, cimData.size());
313+
314+
assertTrue(cimData.containsKey("N0"));
315+
assertTrue(cimData.containsKey("Terminal.N0"));
316+
317+
var terminal = cimData.get("Terminal.N0");
318+
assertNotNull(terminal);
319+
assertEquals(Terminal.class, terminal.getClass());
320+
assertEquals("Terminal.N0", terminal.getRdfid());
321+
322+
var attributeNames = terminal.getAttributeNames();
323+
assertTrue(attributeNames.contains("TopologicalNode"));
324+
assertTrue(attributeNames.contains("name"));
325+
assertEquals("Terminal.N0", terminal.getAttribute("name").toString(false));
326+
327+
var topologicalNode = terminal.getAttribute("TopologicalNode");
328+
assertNotNull(topologicalNode);
329+
assertEquals(TopologicalNode.class, topologicalNode.getClass());
330+
assertEquals("N0", topologicalNode.getRdfid());
331+
assertEquals(topologicalNode, cimData.get("N0"));
332+
333+
attributeNames = topologicalNode.getAttributeNames();
334+
assertTrue(attributeNames.contains("name"));
335+
assertEquals("N0", topologicalNode.getAttribute("name").toString(false));
336+
}
337+
338+
@Test
339+
@Order(190)
340+
void testRead008_TP_EQ() {
341+
var cimData = RdfReader.read(List.of(getPath("rdf/test008_TP.xml"), getPath("rdf/test008_EQ.xml")));
342+
assertEquals(2, cimData.size());
343+
344+
assertTrue(cimData.containsKey("N0"));
345+
assertTrue(cimData.containsKey("Terminal.N0"));
346+
347+
var terminal = cimData.get("Terminal.N0");
348+
assertNotNull(terminal);
349+
assertEquals(Terminal.class, terminal.getClass());
350+
assertEquals("Terminal.N0", terminal.getRdfid());
351+
352+
var attributeNames = terminal.getAttributeNames();
353+
assertTrue(attributeNames.contains("TopologicalNode"));
354+
assertTrue(attributeNames.contains("name"));
355+
assertEquals("Terminal.N0", terminal.getAttribute("name").toString(false));
356+
357+
var topologicalNode = terminal.getAttribute("TopologicalNode");
358+
assertNotNull(topologicalNode);
359+
assertEquals(TopologicalNode.class, topologicalNode.getClass());
360+
assertEquals("N0", topologicalNode.getRdfid());
361+
assertEquals(topologicalNode, cimData.get("N0"));
362+
363+
attributeNames = topologicalNode.getAttributeNames();
364+
assertTrue(attributeNames.contains("name"));
365+
assertEquals("N0", topologicalNode.getAttribute("name").toString(false));
366+
}
367+
368+
@Test
369+
@Order(200)
370+
void testRead009_EQ_TP() {
371+
var cimData = RdfReader.read(List.of(getPath("rdf/test009_EQ.xml"), getPath("rdf/test009_TP.xml")));
372+
assertEquals(2, cimData.size());
373+
374+
assertTrue(cimData.containsKey("N0"));
375+
assertTrue(cimData.containsKey("Terminal.N0"));
376+
377+
var terminal = cimData.get("Terminal.N0");
378+
assertNotNull(terminal);
379+
assertEquals(Terminal.class, terminal.getClass());
380+
assertEquals("Terminal.N0", terminal.getRdfid());
381+
382+
var attributeNames = terminal.getAttributeNames();
383+
assertTrue(attributeNames.contains("TopologicalNode"));
384+
assertTrue(attributeNames.contains("name"));
385+
assertEquals("Terminal.N0", terminal.getAttribute("name").toString(false));
386+
387+
var topologicalNode = terminal.getAttribute("TopologicalNode");
388+
assertNotNull(topologicalNode);
389+
assertEquals(TopologicalNode.class, topologicalNode.getClass());
390+
assertEquals("N0", topologicalNode.getRdfid());
391+
assertEquals(topologicalNode, cimData.get("N0"));
392+
393+
attributeNames = topologicalNode.getAttributeNames();
394+
assertTrue(attributeNames.contains("name"));
395+
assertEquals("N0", topologicalNode.getAttribute("name").toString(false));
396+
}
397+
398+
@Test
399+
@Order(210)
400+
void testRead009_TP_EQ() {
401+
var cimData = RdfReader.read(List.of(getPath("rdf/test009_TP.xml"), getPath("rdf/test009_EQ.xml")));
402+
assertEquals(2, cimData.size());
403+
404+
assertTrue(cimData.containsKey("N0"));
405+
assertTrue(cimData.containsKey("Terminal.N0"));
406+
407+
var terminal = cimData.get("Terminal.N0");
408+
assertNotNull(terminal);
409+
assertEquals(Terminal.class, terminal.getClass());
410+
assertEquals("Terminal.N0", terminal.getRdfid());
411+
412+
var attributeNames = terminal.getAttributeNames();
413+
assertTrue(attributeNames.contains("TopologicalNode"));
414+
assertTrue(attributeNames.contains("name"));
415+
assertEquals("Terminal.N0", terminal.getAttribute("name").toString(false));
416+
417+
var topologicalNode = terminal.getAttribute("TopologicalNode");
418+
assertNotNull(topologicalNode);
419+
assertEquals(TopologicalNode.class, topologicalNode.getClass());
420+
assertEquals("N0", topologicalNode.getRdfid());
421+
assertEquals(topologicalNode, cimData.get("N0"));
422+
423+
attributeNames = topologicalNode.getAttributeNames();
424+
assertTrue(attributeNames.contains("name"));
425+
assertEquals("N0", topologicalNode.getAttribute("name").toString(false));
426+
}
427+
428+
@Test
429+
@Order(220)
430+
void testRead010() {
431+
var cimData = RdfReader.read(List.of(getPath("rdf/test010.xml")));
432+
assertEquals(1, cimData.size());
433+
434+
assertTrue(cimData.containsKey("BaseVoltage.20"));
435+
436+
var baseVoltage = cimData.get("BaseVoltage.20");
437+
assertNotNull(baseVoltage);
438+
439+
var attributeNames = baseVoltage.getAttributeNames();
440+
assertTrue(attributeNames.contains("description"));
441+
assertEquals("€ÄÖÜäöüß", baseVoltage.getAttribute("description").toString(false));
442+
}
443+
444+
@Test
445+
@Order(230)
446+
void testReadFromStrings() {
447+
final String xml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n" +
448+
"<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\n" +
449+
" xmlns:cim=\"http://iec.ch/TC57/2013/CIM-schema-cim16#\">\n" +
450+
" <cim:BaseVoltage rdf:ID=\"BaseVoltage.20\">\n" +
451+
" <cim:IdentifiedObject.description>€ÄÖÜäöüß</cim:IdentifiedObject.description>\n" +
452+
" </cim:BaseVoltage>\n" +
453+
"</rdf:RDF>\n";
454+
var cimData = RdfReader.readFromStrings(List.of(xml));
455+
assertEquals(1, cimData.size());
456+
457+
assertTrue(cimData.containsKey("BaseVoltage.20"));
458+
459+
var baseVoltage = cimData.get("BaseVoltage.20");
460+
assertNotNull(baseVoltage);
461+
462+
var attributeNames = baseVoltage.getAttributeNames();
463+
assertTrue(attributeNames.contains("description"));
464+
assertEquals("€ÄÖÜäöüß", baseVoltage.getAttribute("description").toString(false));
465+
}
466+
308467
private String getPath(String aResource) {
309468
var url = getClass().getClassLoader().getResource(aResource);
310469
assertNotNull(url);

CGMES_2.4.15_27JAN2020/src/test/java/cim4j/utils/RdfWriterTest.java

+145
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,151 @@ void testWrite007() {
330330
assertEquals("</rdf:RDF>", lines[14]);
331331
}
332332

333+
@Test
334+
@Order(200)
335+
void testWrite008_EQ_TP() {
336+
var cimData = RdfReader.read(List.of(getPath("rdf/test008_EQ.xml"), getPath("rdf/test008_TP.xml")));
337+
assertEquals(2, cimData.size());
338+
339+
assertTrue(cimData.containsKey("N0"));
340+
assertTrue(cimData.containsKey("Terminal.N0"));
341+
342+
var rdfWriter = new RdfWriter();
343+
rdfWriter.addCimData(cimData);
344+
345+
var stringWriter = new StringWriter();
346+
rdfWriter.write(stringWriter);
347+
String result = stringWriter.toString();
348+
349+
var lines = result.lines().toArray();
350+
assertEquals(10, lines.length);
351+
assertEquals(XML_HEADER, lines[0]);
352+
assertEquals(RDF_HEADER, lines[1]);
353+
assertEquals(" <cim:Terminal rdf:ID=\"Terminal.N0\">", lines[2]);
354+
assertEquals(" <cim:Terminal.TopologicalNode rdf:resource=\"#N0\"/>", lines[3]);
355+
assertEquals(" <cim:IdentifiedObject.name>Terminal.N0</cim:IdentifiedObject.name>", lines[4]);
356+
assertEquals(" </cim:Terminal>", lines[5]);
357+
assertEquals(" <cim:TopologicalNode rdf:ID=\"N0\">", lines[6]);
358+
assertEquals(" <cim:IdentifiedObject.name>N0</cim:IdentifiedObject.name>", lines[7]);
359+
assertEquals(" </cim:TopologicalNode>", lines[8]);
360+
assertEquals("</rdf:RDF>", lines[9]);
361+
}
362+
363+
@Test
364+
@Order(210)
365+
void testWrite008_TP_EQ() {
366+
var cimData = RdfReader.read(List.of(getPath("rdf/test008_TP.xml"), getPath("rdf/test008_EQ.xml")));
367+
assertEquals(2, cimData.size());
368+
369+
assertTrue(cimData.containsKey("N0"));
370+
assertTrue(cimData.containsKey("Terminal.N0"));
371+
372+
var rdfWriter = new RdfWriter();
373+
rdfWriter.addCimData(cimData);
374+
375+
var stringWriter = new StringWriter();
376+
rdfWriter.write(stringWriter);
377+
String result = stringWriter.toString();
378+
379+
var lines = result.lines().toArray();
380+
assertEquals(10, lines.length);
381+
assertEquals(XML_HEADER, lines[0]);
382+
assertEquals(RDF_HEADER, lines[1]);
383+
assertEquals(" <cim:TopologicalNode rdf:ID=\"N0\">", lines[2]);
384+
assertEquals(" <cim:IdentifiedObject.name>N0</cim:IdentifiedObject.name>", lines[3]);
385+
assertEquals(" </cim:TopologicalNode>", lines[4]);
386+
assertEquals(" <cim:Terminal rdf:ID=\"Terminal.N0\">", lines[5]);
387+
assertEquals(" <cim:Terminal.TopologicalNode rdf:resource=\"#N0\"/>", lines[6]);
388+
assertEquals(" <cim:IdentifiedObject.name>Terminal.N0</cim:IdentifiedObject.name>", lines[7]);
389+
assertEquals(" </cim:Terminal>", lines[8]);
390+
assertEquals("</rdf:RDF>", lines[9]);
391+
}
392+
393+
@Test
394+
@Order(220)
395+
void testWrite009_EQ_TP() {
396+
var cimData = RdfReader.read(List.of(getPath("rdf/test009_EQ.xml"), getPath("rdf/test009_TP.xml")));
397+
assertEquals(2, cimData.size());
398+
399+
assertTrue(cimData.containsKey("N0"));
400+
assertTrue(cimData.containsKey("Terminal.N0"));
401+
402+
var rdfWriter = new RdfWriter();
403+
rdfWriter.addCimData(cimData);
404+
405+
var stringWriter = new StringWriter();
406+
rdfWriter.write(stringWriter);
407+
String result = stringWriter.toString();
408+
409+
var lines = result.lines().toArray();
410+
assertEquals(10, lines.length);
411+
assertEquals(XML_HEADER, lines[0]);
412+
assertEquals(RDF_HEADER, lines[1]);
413+
assertEquals(" <cim:Terminal rdf:ID=\"Terminal.N0\">", lines[2]);
414+
assertEquals(" <cim:Terminal.TopologicalNode rdf:resource=\"#N0\"/>", lines[3]);
415+
assertEquals(" <cim:IdentifiedObject.name>Terminal.N0</cim:IdentifiedObject.name>", lines[4]);
416+
assertEquals(" </cim:Terminal>", lines[5]);
417+
assertEquals(" <cim:TopologicalNode rdf:ID=\"N0\">", lines[6]);
418+
assertEquals(" <cim:IdentifiedObject.name>N0</cim:IdentifiedObject.name>", lines[7]);
419+
assertEquals(" </cim:TopologicalNode>", lines[8]);
420+
assertEquals("</rdf:RDF>", lines[9]);
421+
}
422+
423+
@Test
424+
@Order(230)
425+
void testWrite009_TP_EQ() {
426+
var cimData = RdfReader.read(List.of(getPath("rdf/test009_TP.xml"), getPath("rdf/test009_EQ.xml")));
427+
assertEquals(2, cimData.size());
428+
429+
assertTrue(cimData.containsKey("N0"));
430+
assertTrue(cimData.containsKey("Terminal.N0"));
431+
432+
var rdfWriter = new RdfWriter();
433+
rdfWriter.addCimData(cimData);
434+
435+
var stringWriter = new StringWriter();
436+
rdfWriter.write(stringWriter);
437+
String result = stringWriter.toString();
438+
439+
var lines = result.lines().toArray();
440+
assertEquals(10, lines.length);
441+
assertEquals(XML_HEADER, lines[0]);
442+
assertEquals(RDF_HEADER, lines[1]);
443+
assertEquals(" <cim:TopologicalNode rdf:ID=\"N0\">", lines[2]);
444+
assertEquals(" <cim:IdentifiedObject.name>N0</cim:IdentifiedObject.name>", lines[3]);
445+
assertEquals(" </cim:TopologicalNode>", lines[4]);
446+
assertEquals(" <cim:Terminal rdf:ID=\"Terminal.N0\">", lines[5]);
447+
assertEquals(" <cim:Terminal.TopologicalNode rdf:resource=\"#N0\"/>", lines[6]);
448+
assertEquals(" <cim:IdentifiedObject.name>Terminal.N0</cim:IdentifiedObject.name>", lines[7]);
449+
assertEquals(" </cim:Terminal>", lines[8]);
450+
assertEquals("</rdf:RDF>", lines[9]);
451+
}
452+
453+
@Test
454+
@Order(240)
455+
void testWrite010() {
456+
var cimData = RdfReader.read(List.of(getPath("rdf/test010.xml")));
457+
assertEquals(1, cimData.size());
458+
459+
assertTrue(cimData.containsKey("BaseVoltage.20"));
460+
461+
var rdfWriter = new RdfWriter();
462+
rdfWriter.addCimData(cimData);
463+
464+
var stringWriter = new StringWriter();
465+
rdfWriter.write(stringWriter);
466+
String result = stringWriter.toString();
467+
468+
var lines = result.lines().toArray();
469+
assertEquals(6, lines.length);
470+
assertEquals(XML_HEADER, lines[0]);
471+
assertEquals(RDF_HEADER, lines[1]);
472+
assertEquals(" <cim:BaseVoltage rdf:ID=\"BaseVoltage.20\">", lines[2]);
473+
assertEquals(" <cim:IdentifiedObject.description>€ÄÖÜäöüß</cim:IdentifiedObject.description>", lines[3]);
474+
assertEquals(" </cim:BaseVoltage>", lines[4]);
475+
assertEquals("</rdf:RDF>", lines[5]);
476+
}
477+
333478
@Test
334479
@Order(900)
335480
void testWriteCimData() {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?xml version="1.0" encoding="utf-8" ?>
2+
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
3+
xmlns:cim="http://iec.ch/TC57/2013/CIM-schema-cim16#">
4+
<cim:Terminal rdf:ID="Terminal.N0">
5+
<cim:Terminal.TopologicalNode rdf:resource="#N0" />
6+
<cim:IdentifiedObject.name>Terminal.N0</cim:IdentifiedObject.name>
7+
</cim:Terminal>
8+
</rdf:RDF>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?xml version="1.0" encoding="utf-8" ?>
2+
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
3+
xmlns:cim="http://iec.ch/TC57/2013/CIM-schema-cim16#">
4+
<cim:TopologicalNode rdf:ID="N0">
5+
<cim:IdentifiedObject.name>N0</cim:IdentifiedObject.name>
6+
</cim:TopologicalNode>
7+
</rdf:RDF>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?xml version="1.0" encoding="utf-8" ?>
2+
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
3+
xmlns:cim="http://iec.ch/TC57/2013/CIM-schema-cim16#">
4+
<cim:Terminal rdf:ID="Terminal.N0">
5+
<cim:IdentifiedObject.name>Terminal.N0</cim:IdentifiedObject.name>
6+
</cim:Terminal>
7+
</rdf:RDF>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?xml version="1.0" encoding="utf-8" ?>
2+
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
3+
xmlns:cim="http://iec.ch/TC57/2013/CIM-schema-cim16#">
4+
<cim:TopologicalNode rdf:ID="N0">
5+
<cim:IdentifiedObject.name>N0</cim:IdentifiedObject.name>
6+
</cim:TopologicalNode>
7+
<cim:Terminal rdf:about="#Terminal.N0">
8+
<cim:Terminal.TopologicalNode rdf:resource="#N0" />
9+
</cim:Terminal>
10+
</rdf:RDF>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<?xml version="1.0" encoding="utf-8" ?>
2+
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
3+
xmlns:cim="http://iec.ch/TC57/2013/CIM-schema-cim16#">
4+
<cim:BaseVoltage rdf:ID="BaseVoltage.20">
5+
<cim:IdentifiedObject.description>€ÄÖÜäöüß</cim:IdentifiedObject.description>
6+
</cim:BaseVoltage>
7+
</rdf:RDF>

0 commit comments

Comments
 (0)