浏览代码

Latex Document End

Andrew Grant 4 月之前
父节点
当前提交
7ba8681800

+ 1 - 0
src/main/java/scot/carricksoftware/grantswriter/constants/LatexConstants.java

@@ -15,5 +15,6 @@ public class LatexConstants {
     }
 
     public static final String DOCUMENT_START = "\\begin{document}";
+    public static final String DOCUMENT_END = "\\end{document}";
 
 }

+ 5 - 1
src/main/java/scot/carricksoftware/grantswriter/writer/TexWriterImpl.java

@@ -6,6 +6,7 @@
 package scot.carricksoftware.grantswriter.writer;
 
 import org.springframework.stereotype.Component;
+import scot.carricksoftware.grantswriter.writer.latex.LatexDocumentEnd;
 import scot.carricksoftware.grantswriter.writer.latex.LatexDocumentStart;
 
 @Component
@@ -14,16 +15,19 @@ public class TexWriterImpl implements TexWriter {
     private final FileWriter fileWriter;
 
     private final LatexDocumentStart docStart;
+    private final LatexDocumentEnd docEnd;
 
-    public TexWriterImpl(FileWriter fileWriter, LatexDocumentStart docStart) {
+    public TexWriterImpl(FileWriter fileWriter, LatexDocumentStart docStart, LatexDocumentEnd docEnd) {
         this.fileWriter = fileWriter;
         this.docStart = docStart;
+        this.docEnd = docEnd;
     }
 
     @Override
     public void write(String filename) throws Exception {
         fileWriter.init(filename);
         docStart.write();
+        docEnd.write();
         fileWriter.close();
     }
 }

+ 11 - 0
src/main/java/scot/carricksoftware/grantswriter/writer/latex/LatexDocumentEnd.java

@@ -0,0 +1,11 @@
+/*
+ * Copyright (c) 2025.  Andrew Grant Carrick Software. All rights reserved
+ *
+ */
+
+package scot.carricksoftware.grantswriter.writer.latex;
+
+public interface LatexDocumentEnd {
+
+    void write();
+}

+ 25 - 0
src/main/java/scot/carricksoftware/grantswriter/writer/latex/LatexDocumentEndImpl.java

@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2025.  Andrew Grant Carrick Software. All rights reserved
+ *
+ */
+
+package scot.carricksoftware.grantswriter.writer.latex;
+
+import org.springframework.stereotype.Component;
+import scot.carricksoftware.grantswriter.constants.LatexConstants;
+import scot.carricksoftware.grantswriter.writer.FileWriter;
+
+@Component
+public class LatexDocumentEndImpl implements LatexDocumentEnd {
+
+    private final FileWriter fileWriter;
+
+    public LatexDocumentEndImpl(FileWriter fileWriter) {
+        this.fileWriter = fileWriter;
+    }
+
+    @Override
+    public void write() {
+        fileWriter.writeLine(LatexConstants.DOCUMENT_END);
+    }
+}

+ 8 - 3
src/test/java/scot/carricksoftware/grantswriter/writer/TexWriterTest.java

@@ -11,6 +11,7 @@ import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.InOrder;
 import org.mockito.Mock;
 import org.mockito.junit.jupiter.MockitoExtension;
+import scot.carricksoftware.grantswriter.writer.latex.LatexDocumentEnd;
 import scot.carricksoftware.grantswriter.writer.latex.LatexDocumentStart;
 
 import static org.mockito.ArgumentMatchers.anyString;
@@ -26,17 +27,21 @@ class TexWriterTest {
     private FileWriter fileWriterMock;
 
     @Mock
-    private LatexDocumentStart docStartMockMock;
+    private LatexDocumentStart docStartMock;
+
+    @Mock
+    private LatexDocumentEnd docEndMock;
 
     @BeforeEach
     void setUp() {
-        texWriter = new TexWriterImpl(fileWriterMock, docStartMockMock);
+        texWriter = new TexWriterImpl(fileWriterMock, docStartMock, docEndMock);
     }
 
     @Test
-    void initAndCloseTest() throws Exception {
+    void writeTest() throws Exception {
         InOrder inorder = inOrder(fileWriterMock, fileWriterMock);
         texWriter.write(GetRandomString());
+
         inorder.verify(fileWriterMock).init(anyString());
         inorder.verify(fileWriterMock).close();
     }

+ 34 - 0
src/test/java/scot/carricksoftware/grantswriter/writer/latex/LatexDocumentEndTest.java

@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2025.  Andrew Grant Carrick Software. All rights reserved
+ *
+ */
+
+package scot.carricksoftware.grantswriter.writer.latex;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.Mock;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
+import scot.carricksoftware.grantswriter.writer.FileWriter;
+
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
+@ExtendWith(SpringExtension.class)
+class LatexDocumentEndTest {
+
+    private LatexDocumentEnd documentEnd;
+
+    @Mock
+    private FileWriter fileWriterMock ;
+
+    @BeforeEach
+    void setUp() {
+        documentEnd = new LatexDocumentEndImpl(fileWriterMock);
+    }
+
+    @Test
+    public void constructorTest() {
+        assertNotNull(documentEnd);
+    }
+}

+ 1 - 1
src/test/java/scot/carricksoftware/grantswriter/writer/latex/LatexDocumentStartImplTest.java → src/test/java/scot/carricksoftware/grantswriter/writer/latex/LatexDocumentStartTest.java

@@ -15,7 +15,7 @@ import scot.carricksoftware.grantswriter.writer.FileWriter;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 
 @ExtendWith(SpringExtension.class)
-class LatexDocumentStartImplTest {
+class LatexDocumentStartTest {
 
     private LatexDocumentStart documentStart;