package Ġorg . ion project . integration . infrastructure . pdf extractor Ċ Ċ import Ġjava . io . File Ċ import Ġorg . ion project . integration . infrastructure . exception . Pdf Extractor Exception Ċ import Ġorg . ion project . integration . infrastructure . Composite Exception Ċ import Ġorg . ion project . integration . infrastructure . or Throw Ċ import Ġorg . junit . jupiter . api . Assertions . assertEquals Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . assert Throws Ċ Ċ class ĠTab ula Pdf Extractor Tests Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġwhen Pdf Path IsEmpty _ thenReturn Extraction Failed () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġval Ġpdf Path Ġ= Ġ"" ĊĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠTime table Extractor . Class Schedule . extract ( pdf Path ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ Ġval Ġe Ġ= ĠassertThrows < Pdf Extractor Exception > Ġ{ Ġresult . or Throw () Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals (" Empty Ġpath ", Ġe . message ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġwhen File Does nt Exist _ thenReturn Extraction Failed () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġval Ġpdf Path Ġ= Ġ"/ invalid path " ĊĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠTime table Extractor . Class Schedule . extract ( pdf Path ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ Ġval Ġe Ġ= ĠassertThrows < Pdf Extractor Exception > Ġ{ Ġresult . or Throw () Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals (" File Ġdoesn 't Ġexist ", Ġe . message ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġwhen Invalid File Format _ thenReturn Extraction Failed () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile . create TempFile (" test ", Ġ". txt ") ĊĠĠĠĠĠĠĠ Ġval Ġpdf Path Ġ= Ġfile . path ĊĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠTime table Extractor . Class Schedule . extract ( pdf Path ) ĊĠĠĠĠĠĠĠ Ġfile . delete On Exit () ĊĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ Ġval Ġe Ġ= ĠassertThrows < Composite Exception > Ġ{ Ġresult . or Throw () Ġ} ĊĠĠĠĠĠĠĠ ĠassertEquals ( 2 , Ġe . exceptions . count ()) ĊĠĠĠĠĠĠĠ ĠassertEquals ( true , Ġe . exceptions [ 1 ] Ġis ĠPdf Extractor Exception ) ĊĠĠĠĠĠĠĠ ĠassertEquals (" Tab ula Ġcannot Ġprocess Ġfile ", Ġe . exceptions [ 1 ]. message ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġwhen Valid File Format _ thenReturn Extraction Success And Json Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġval Ġpdf Path Ġ= Ġ" src / test / resources / test . pdf " ĊĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠTime table Extractor . Class Schedule . extract ( pdf Path ). or Throw () ĊĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġresult . count ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġwhen Valid Calendar File Format _ thenReturn Extraction Success And Json Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠArrange ĊĠĠĠĠĠĠĠ Ġval Ġpdf Path Ġ= Ġ" src / test / resources / calendar Test . pdf " ĊĊĠĠĠĠĠĠĠ Ġ// ĠAct ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠA cademic Calendar Extractor . calendar Table . extract ( pdf Path ). or Throw () ĊĊĠĠĠĠĠĠĠ Ġ// ĠAssert ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġresult . count ()) ĊĠĠĠ Ġ} Ċ } Ċ