Author: tilman
Date: Sat Nov 15 18:32:35 2025
New Revision: 1929773
Log:
PDFBOX-5660: close input, as suggested by Valery Bokov; closes #336
Modified:
pdfbox/branches/3.0/fontbox/src/test/java/org/apache/fontbox/afm/AFMParserTest.java
Modified:
pdfbox/branches/3.0/fontbox/src/test/java/org/apache/fontbox/afm/AFMParserTest.java
==============================================================================
---
pdfbox/branches/3.0/fontbox/src/test/java/org/apache/fontbox/afm/AFMParserTest.java
Sat Nov 15 16:23:48 2025 (r1929772)
+++
pdfbox/branches/3.0/fontbox/src/test/java/org/apache/fontbox/afm/AFMParserTest.java
Sat Nov 15 18:32:35 2025 (r1929773)
@@ -27,6 +27,7 @@ import static org.junit.jupiter.api.Asse
import java.io.ByteArrayInputStream;
import java.io.FileInputStream;
import java.io.IOException;
+import java.io.InputStream;
import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.Optional;
@@ -59,129 +60,147 @@ class AFMParserTest
@Test
void testEndFontMetrics() throws IOException
{
- AFMParser parser = new AFMParser(
- new
FileInputStream("src/test/resources/afm/NoEndFontMetrics.afm"));
- try
+ try (InputStream is = new
FileInputStream("src/test/resources/afm/NoEndFontMetrics.afm"))
{
- parser.parse();
- fail("The AFMParser should have thrown an IOException because of a
missing "
- + AFMParser.END_FONT_METRICS);
- }
- catch (IOException e)
- {
- assertTrue(e.getMessage().contains("Unknown AFM key"));
+ AFMParser parser = new AFMParser(is);
+ try
+ {
+ parser.parse();
+ fail("The AFMParser should have thrown an IOException because
of a missing "
+ + AFMParser.END_FONT_METRICS);
+ }
+ catch (IOException e)
+ {
+ assertTrue(e.getMessage().contains("Unknown AFM key"));
+ }
}
}
@Test
void testMalformedFloat() throws IOException
{
- AFMParser parser = new AFMParser(
- new
FileInputStream("src/test/resources/afm/MalformedFloat.afm"));
- try
- {
- parser.parse();
- fail("The AFMParser should have thrown an IOException because of a
malformed float value");
- }
- catch (IOException e)
+ try (InputStream is = new
FileInputStream("src/test/resources/afm/MalformedFloat.afm"))
{
- assertTrue(e.getCause() instanceof NumberFormatException);
- assertTrue(e.getMessage().contains("4,1ab"));
+ AFMParser parser = new AFMParser(is);
+ try
+ {
+ parser.parse();
+ fail("The AFMParser should have thrown an IOException because
of a malformed float value");
+ }
+ catch (IOException e)
+ {
+ assertTrue(e.getCause() instanceof NumberFormatException);
+ assertTrue(e.getMessage().contains("4,1ab"));
+ }
}
}
@Test
void testMalformedInteger() throws IOException
{
- AFMParser parser = new AFMParser(
- new
FileInputStream("src/test/resources/afm/MalformedInteger.afm"));
- try
+ try (InputStream is = new
FileInputStream("src/test/resources/afm/MalformedInteger.afm"))
{
- parser.parse();
- fail("The AFMParser should have thrown an IOException because of a
malformed int value");
- }
- catch (IOException e)
- {
- assertTrue(e.getCause() instanceof NumberFormatException);
- assertTrue(e.getMessage().contains("3.4"));
+ try
+ {
+ AFMParser parser = new AFMParser(is);
+ parser.parse();
+ fail("The AFMParser should have thrown an IOException because
of a malformed int value");
+ }
+ catch (IOException e)
+ {
+ assertTrue(e.getCause() instanceof NumberFormatException);
+ assertTrue(e.getMessage().contains("3.4"));
+ }
}
}
@Test
void testHelveticaFontMetrics() throws IOException
{
- AFMParser parser = new AFMParser(
- new FileInputStream("src/test/resources/afm/Helvetica.afm"));
- checkHelveticaFontMetrics(parser.parse());
+ try (InputStream is = new
FileInputStream("src/test/resources/afm/Helvetica.afm"))
+ {
+ AFMParser parser = new AFMParser(is);
+ checkHelveticaFontMetrics(parser.parse());
+ }
}
@Test
void testHelveticaCharMetrics() throws IOException
{
- AFMParser parser = new AFMParser(
- new FileInputStream("src/test/resources/afm/Helvetica.afm"));
- FontMetrics fontMetrics = parser.parse();
+ try (InputStream is = new
FileInputStream("src/test/resources/afm/Helvetica.afm"))
+ {
+ AFMParser parser = new AFMParser(is);
+ FontMetrics fontMetrics = parser.parse();
- // char metrics
- checkHelveticaCharMetrics(fontMetrics.getCharMetrics());
+ // char metrics
+ checkHelveticaCharMetrics(fontMetrics.getCharMetrics());
+ }
}
@Test
void testHelveticaKernPairs() throws IOException
{
- AFMParser parser = new AFMParser(
- new FileInputStream("src/test/resources/afm/Helvetica.afm"));
- FontMetrics fontMetrics = parser.parse();
-
- // KernPairs
- List<KernPair> kernPairs = fontMetrics.getKernPairs();
- assertEquals(2705, kernPairs.size());
- // check "KPX A Ucircumflex -50"
- checkKernPair(kernPairs, "A", "Ucircumflex", -50, 0);
- // check "KPX W agrave -40"
- checkKernPair(kernPairs, "W", "agrave", -40, 0);
- // KernPairs0
- assertTrue(fontMetrics.getKernPairs0().isEmpty());
- // KernPairs1
- assertTrue(fontMetrics.getKernPairs1().isEmpty());
- // composite data
- assertTrue(fontMetrics.getComposites().isEmpty());
+ try (InputStream is = new
FileInputStream("src/test/resources/afm/Helvetica.afm"))
+ {
+ AFMParser parser = new AFMParser(is);
+ FontMetrics fontMetrics = parser.parse();
+
+ // KernPairs
+ List<KernPair> kernPairs = fontMetrics.getKernPairs();
+ assertEquals(2705, kernPairs.size());
+ // check "KPX A Ucircumflex -50"
+ checkKernPair(kernPairs, "A", "Ucircumflex", -50, 0);
+ // check "KPX W agrave -40"
+ checkKernPair(kernPairs, "W", "agrave", -40, 0);
+ // KernPairs0
+ assertTrue(fontMetrics.getKernPairs0().isEmpty());
+ // KernPairs1
+ assertTrue(fontMetrics.getKernPairs1().isEmpty());
+ // composite data
+ assertTrue(fontMetrics.getComposites().isEmpty());
+ }
}
@Test
void testHelveticaFontMetricsReducedDataset() throws IOException
{
- AFMParser parser = new AFMParser(
- new FileInputStream("src/test/resources/afm/Helvetica.afm"));
- checkHelveticaFontMetrics(parser.parse(true));
+ try (InputStream is = new
FileInputStream("src/test/resources/afm/Helvetica.afm"))
+ {
+ AFMParser parser = new AFMParser(is);
+ checkHelveticaFontMetrics(parser.parse(true));
+ }
}
@Test
void testHelveticaCharMetricsReducedDataset() throws IOException
{
- AFMParser parser = new AFMParser(
- new FileInputStream("src/test/resources/afm/Helvetica.afm"));
- FontMetrics fontMetrics = parser.parse(true);
+ try (InputStream is = new
FileInputStream("src/test/resources/afm/Helvetica.afm"))
+ {
+ AFMParser parser = new AFMParser(is);
+ FontMetrics fontMetrics = parser.parse(true);
- // char metrics
- checkHelveticaCharMetrics(fontMetrics.getCharMetrics());
+ // char metrics
+ checkHelveticaCharMetrics(fontMetrics.getCharMetrics());
+ }
}
@Test
void testHelveticaKernPairsReducedDataset() throws IOException
{
- AFMParser parser = new AFMParser(
- new FileInputStream("src/test/resources/afm/Helvetica.afm"));
- FontMetrics fontMetrics = parser.parse(true);
-
- // KernPairs, empty due to reducedDataset == true
- assertTrue(fontMetrics.getKernPairs().isEmpty());
- // KernPairs0
- assertTrue(fontMetrics.getKernPairs0().isEmpty());
- // KernPairs1
- assertTrue(fontMetrics.getKernPairs1().isEmpty());
- // composite data
- assertTrue(fontMetrics.getComposites().isEmpty());
+ try (InputStream is = new
FileInputStream("src/test/resources/afm/Helvetica.afm"))
+ {
+ AFMParser parser = new AFMParser(is);//
+ FontMetrics fontMetrics = parser.parse(true);
+
+ // KernPairs, empty due to reducedDataset == true
+ assertTrue(fontMetrics.getKernPairs().isEmpty());
+ // KernPairs0
+ assertTrue(fontMetrics.getKernPairs0().isEmpty());
+ // KernPairs1
+ assertTrue(fontMetrics.getKernPairs1().isEmpty());
+ // composite data
+ assertTrue(fontMetrics.getComposites().isEmpty());
+ }
}
private void checkHelveticaCharMetrics(List<CharMetric> charMetrics)