Package gdv.xport

Class DatenpaketTest

java.lang.Object
gdv.xport.DatenpaketTest

public final class DatenpaketTest extends Object
JUnit- und Integrations-Tests fuer Datenpaket-Klasse. Die Integrationstests waren urspruenglich durch "@IntegrationTest" gekennzeichnet. Mit dem JUnit-Vintage-Runner aus JUnit 5 has aber nicht mehr zuverlaessig funktioniert, sodass jetzt darauf verzichtet wird.
Since:
23.10.2009
Author:
oliver
  • Constructor Details

    • DatenpaketTest

      public DatenpaketTest()
  • Method Details

    • setUpExportDir

      public static void setUpExportDir() throws IOException
      Throws:
      IOException
    • testEmptyExport

      public void testEmptyExport() throws IOException
      Test-Methode fuer Datenpaket.export(java.io.Writer). Damit die Assert's der Satzlaenge stimmen, muessen wir das End-of-Datensatz abschalten.
      Throws:
      IOException - falls z.B. die Platte voll ist
    • testExportFile

      public void testExportFile() throws IOException
      Tested den Export. Damit die Assert's der Satzlaenge stimmen, muessen wir das End-of-Datensatz abschalten.
      Throws:
      IOException - falls Temp-Datei nicht angelegt werden kann.
    • testAdd

      public void testAdd()
      Testet das Hinzuefuegen eines Datensatzes.
    • testAddMehrereDatensaetze

      public void testAddMehrereDatensaetze() throws IOException
      Throws:
      IOException
    • testAddVorbelegung

      public void testAddVorbelegung()
    • testGetErstellungsDatumVon

      public void testGetErstellungsDatumVon()
      Falls kein Datum gesetzt wird, sollte als Default das heutige DAtum zurueckgegeben werden.
    • testGetAbsender

      public void testGetAbsender()
      Test-Methode fuer Datenpaket.getAbsender().
    • testSetVermittler

      public void testSetVermittler()
      Test-Methode fuer Datenpaket.getVermittler().
    • testSetVuNummer

      public void testSetVuNummer()
    • testImportMusterdatei

      public void testImportMusterdatei() throws IOException
      Tested den Import.
      Throws:
      IOException - Signals that an I/O exception has occurred.
    • testImportMusterdateiStrict

      public void testImportMusterdateiStrict() throws IOException
      Throws:
      IOException
    • testImport2Datenpakete

      public void testImport2Datenpakete() throws IOException
      Tested einen Import von 2 Datenpaketen.
      Throws:
      IOException - Signals that an I/O exception has occurred.
    • testImport2DatenpaketeWithReader

      public void testImport2DatenpaketeWithReader() throws IOException
      Tested einen Import von 2 Datenpaketen.
      Throws:
      IOException - Signals that an I/O exception has occurred.
    • testImport2DatenpaketeStrict

      public void testImport2DatenpaketeStrict() throws IOException
      Throws:
      IOException
    • testImportFromURL

      public void testImportFromURL() throws IOException
      Tested den Import von einer URL.
      Throws:
      IOException - Signals that an I/O exception has occurred.
    • testImportFromFile

      public void testImportFromFile() throws IOException
      Ursache fuer Issue 37 war ein Encoding-Problem beim Import. Hiermit wurde das Problem nachgestellt.
      Throws:
      IOException - Signals that an I/O exception has occurred.
    • testImportFromHTTP

      public void testImportFromHTTP() throws IOException
      Der Test wurde als IntegrationTest markiert, da dazu eine Online-Verbindung noetig ist (die nicht immer vorausgesetzt werden kann).
      Throws:
      IOException - falls man z.B. offline ist
      Since:
      0.3
    • testImportTrimmed

      public void testImportTrimmed() throws IOException
      Falls Leerzeichen am Zeilenende weggelassen wurden, sollen die einzelnen Saetze trotzdem importiert werden koennen.
      Throws:
      IOException - Signals that an I/O exception has occurred.
      Since:
      0.9.3
    • testTeildatensatzWechsel

      public void testTeildatensatzWechsel() throws IOException
      Pruefe, ob der Wechsel zum naechsten Datensatz korrekt funktioniert, auch wenn der folgende Satz die gleiche Satzart+Sparte besitzt...
      Throws:
      IOException - Signals that an I/O exception has occurred.
    • testImportExport

      public void testImportExport() throws IOException
      Der Export eines zuvor importierten Datenpakets sollte identisch mit der Ausgangsdatei sein.
      Throws:
      IOException - falls die Platte kaputt ist
      Since:
      0.5.0
    • testImportExportAllDatensaetze

      public void testImportExportAllDatensaetze() throws IOException
      Throws:
      IOException
    • testImportIgor

      public void testImportIgor() throws IOException
      Hier wird die Import-Datei getestet, die mir Igor geschickt hat und mit der es anfangs Probleme gab.
      Throws:
      IOException - bei I/O-Problemen
    • testImportIgorAsStream

      public void testImportIgorAsStream() throws IOException
      Hier wird die Import-Datei getestet, die mir Igor geschickt hat und mit dem es anfangs Probleme gab. Dieses Mal wird aber die Datei als Stream eingelesen.
      Throws:
      IOException - bei I/O-Problemen
    • testBenderLeben

      public void testBenderLeben() throws IOException
      Test-Import von "Bender_Leben.GDV".
      Throws:
      IOException - bei I/O-Problemen
    • testLebenWagnis2Riester

      public void testLebenWagnis2Riester() throws IOException
      Test-Import von "Leben_Wagnis2_Riester.GDV".
      Throws:
      IOException - bei I/O-Problemen
    • testLebenWagnis3Riskikoversicherung

      public void testLebenWagnis3Riskikoversicherung() throws IOException
      Test-Import von "Leben_Wagnis3_Risikoversicherung.GDV".
      Throws:
      IOException - bei I/O-Problemen
    • testLebenWagnis4BU

      public void testLebenWagnis4BU() throws IOException
      Test-Import von "Leben_Wagnis4_BU.GDV".
      Throws:
      IOException - bei I/O-Problemen
    • testValidate

      public void testValidate()
      Wenn keine VU-Nummer gesetzt wurde, sollte es mind. ein Validierungs- Fehler geben.
    • testValidateFolgenummer

      public void testValidateFolgenummer()
      Fuer eine Versicherungsscheinnummer muss die Folgenummer immer mit 1 anfangen. Taucht dieser Versicherungsscheinnummer fuer den gleichen Satz ein zweites Mal auf, muss die Folgenummer entsprechend erhoeht werden.
    • testAddDatensatz200

      public void testAddDatensatz200()
    • testAddDatensatz400BeitragBrutto

      public void testAddDatensatz400BeitragBrutto()
    • testAddDatensatz400Provision

      public void testAddDatensatz400Provision()
    • testAddDatensatz500VersicherungsLeistungen

      public void testAddDatensatz500VersicherungsLeistungen()
    • testAddDatensatz500Schaden

      public void testAddDatensatz500Schaden()
    • testSetVersionNachsatz

      public void testSetVersionNachsatz()
    • testEquals

      public void testEquals()
    • testNotEquals

      public void testNotEquals()
    • testImportWagnisart13

      public void testImportWagnisart13() throws IOException
      Hierueber wird der fehlerhafte Import aus Issue #61 nachgestellt.
      Throws:
      IOException - im Fehlerfall
    • testExportImportWagnisart13

      public void testExportImportWagnisart13() throws IOException
      Throws:
      IOException
    • testExportImport221Wagnisdaten

      public void testExportImport221Wagnisdaten() throws IOException
      Throws:
      IOException
    • testPack

      public void testPack() throws IOException
      Dies ist Testfall fuer Issue #62.
      Throws:
      IOException - im Fehlerfall
    • testPackMusterdatei

      public void testPackMusterdatei() throws IOException
      Throws:
      IOException
    • testExportImportSchaden500V1_8

      public void testExportImportSchaden500V1_8() throws IOException
      Throws:
      IOException
    • testExportImportSchaden500V1_5

      public void testExportImportSchaden500V1_5() throws IOException
      Throws:
      IOException
    • testImport0220_010_48_version_differences

      public void testImport0220_010_48_version_differences() throws IOException
      Test dass ein Datensatz in einer alten Version korrekt ist, in einer neuen Version aber nicht korrekt Testfall eines Beispiels eines 0220.010.48-er Datensatzes, Aenderung zwischen VUVM2015 und VUVM2018 (Risikozuschlag in %)
      Throws:
      IOException - im Fehlerfall
    • testImportUnbekannterSatz

      public void testImportUnbekannterSatz() throws IOException
      Throws:
      IOException
    • testImport0220_020_1_satz_kaputt

      public void testImport0220_020_1_satz_kaputt() throws IOException
      Throws:
      IOException
    • testMemoryVerbrauch

      public void testMemoryVerbrauch() throws CloneNotSupportedException
      Dieser Test dient zum Messen des Speicherverbrauchs. Aktuell steigt er nach 7946 kompletten Datensaetzen (ca. 1.26 Mio Saetze) mit einer OOME aus (nach 4 Minunten bei 8 GB Haupt-Speicher).

      Nach der Optimierung des Speicherabrdrucks steigt dieser Test unter gleichen Ausgangsbedingungen erst nach 15.000 kompletten Datensaetzen (2.0 Mio Saetzen, 2.9 Mio Teildatensaetzen) aus.

      Eine Abloesung der Speicherung der Felder als HashMap durch eine SortedSet lies den Speicherverbrauch wieder um ca. 20% anstelgen (ca. 12.200 komplette Datensaetze). Durch den Austausch der SortedSet durch eine Arraylist brachte hingegen einen weiteren Speicherreduktion um 20% (17.700 Datensaetze).

      Throws:
      CloneNotSupportedException - sollte nicht vorkommen
    • testConfigVorsatzNachsatz

      public void testConfigVorsatzNachsatz()
    • testImportLebenFromFileMixedTeildatensaetze

      public void testImportLebenFromFileMixedTeildatensaetze() throws IOException
      Test fuer Issue #82. Problem ist, dass Teildatensaetze bei Leben in der falschen Reihenfolge (Wagnisarten) nicht korrekt auf die Saetze geparst werden. So wird z.B. ein Tds2 von Wagnisart 2 (der direkt auf einen Tds1 von Wagnisart 48 folgt), faelschlicherweise als Tds2 der Wagnisart 48 interpretiert. Hiermit wurde das Problem nachgestellt.
      Throws:
      IOException - Signals that an I/O exception has occurred.