From ebc4547184d01b477dd4e15021132939e3771551 Mon Sep 17 00:00:00 2001 From: Ivan Olexyn Date: Sun, 20 Dec 2020 17:34:56 +0100 Subject: [PATCH] implement the test cases --- src/test/TestCases.xlsx | Bin 5652 -> 5780 bytes src/test/java/com/olexyn/ensync/AppTest.java | 20 -- .../com/olexyn/ensync/files/FileTest.java | 234 +++++++++--------- .../com/olexyn/ensync/files/TestFile.java | 58 +++++ .../com/olexyn/ensync/files/TestableFile.java | 21 -- 5 files changed, 179 insertions(+), 154 deletions(-) delete mode 100644 src/test/java/com/olexyn/ensync/AppTest.java create mode 100644 src/test/java/com/olexyn/ensync/files/TestFile.java delete mode 100644 src/test/java/com/olexyn/ensync/files/TestableFile.java diff --git a/src/test/TestCases.xlsx b/src/test/TestCases.xlsx index 73b6235417476de4c41883fc2c9eb6276c477762..afa5fc495393b1426e48cfa3f2031f82426e08b8 100644 GIT binary patch delta 3794 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 Hy5#)_eon6b diff --git a/src/test/java/com/olexyn/ensync/AppTest.java b/src/test/java/com/olexyn/ensync/AppTest.java deleted file mode 100644 index b1b28ec..0000000 --- a/src/test/java/com/olexyn/ensync/AppTest.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.olexyn.ensync; - -import static org.junit.Assert.assertTrue; - -import org.junit.Test; - -/** - * Unit test for simple App. - */ -public class AppTest -{ - /** - * Rigorous Test :-) - */ - @Test - public void shouldAnswerWithTrue() - { - assertTrue( true ); - } -} diff --git a/src/test/java/com/olexyn/ensync/files/FileTest.java b/src/test/java/com/olexyn/ensync/files/FileTest.java index fd2aafd..347873e 100644 --- a/src/test/java/com/olexyn/ensync/files/FileTest.java +++ b/src/test/java/com/olexyn/ensync/files/FileTest.java @@ -3,8 +3,11 @@ package com.olexyn.ensync.files; import com.olexyn.ensync.Execute; import com.olexyn.ensync.Tools; import org.junit.Assert; +import org.junit.Test; import java.io.File; +import java.util.ArrayList; +import java.util.List; public class FileTest { @@ -16,133 +19,138 @@ public class FileTest { private static final String fileAPath = "asdf"; private static final String fileBPath = "asff"; - private final File a = new File(fileAPath); - private final File b = new File(fileBPath); - - private void createFile(File file){ - - } - - private void updateFile(File file){ + private final TestFile a = new TestFile(fileAPath); + private final TestFile b = new TestFile(fileBPath); + private List createFile(File file) { + try { + Thread.sleep(10); + } catch (InterruptedException e) { + System.out.println(""); + } + return new ArrayList(); } - - private void deleteFile(File file){ - + private List updateFile(File file) { + try { + Thread.sleep(10); + } catch (InterruptedException e) { + System.out.println(""); + } + return new ArrayList(); } - - - - public void deleteA(){ - - Assert.assertFalse(a.exists()); - Assert.assertFalse(b.exists()); - - - + private void deleteFile(File file) { + try { + Thread.sleep(10); + } catch (InterruptedException e) { + System.out.println(""); + } } - /** - * Simulates user activity on disk. - */ - void createFiles() throws InterruptedException { - StringBuilder sbA = new StringBuilder("a"); - StringBuilder sbB = new StringBuilder("b"); - - // dv (deleted-void) - // TODO - - // dd - tools.writeSbToPath(PATH+"/a/dd", sbA); - Thread.sleep(10); - tools.writeSbToPath(PATH+"/b/dd", sbB); - Thread.sleep(10);Thread.sleep(10); - x.execute(new String[]{"rm", PATH+"/a/dd"}); - Thread.sleep(10); - x.execute(new String[]{"rm", PATH+"/b/dd"}); - Thread.sleep(10); - - // dc - tools.writeSbToPath(PATH+"/a/dc", sbA); - Thread.sleep(10); - x.execute(new String[]{"rm", PATH+"/a/dc"}); - Thread.sleep(10); - tools.writeSbToPath(PATH+"/b/dc", sbB); - Thread.sleep(10); - - // dm - tools.writeSbToPath(PATH+"/a/dm", sbA); - Thread.sleep(10); - x.execute(new String[]{"rm", PATH+"/a/dm"}); - Thread.sleep(10); - tools.writeSbToPath(PATH+"/b/dm", sbB); - Thread.sleep(10); - - // dv (deleted-void) - // TODO - - // cd - // TODO - - // cc - // TODO - - // cm - // TODO - - // cv (created-void) - // TODO - - // md - // TODO - - // mc - // TODO - - // mm - // TODO - + private void cleanDirs() { + deleteFile(a); + deleteFile(b); } - /** - * Checks if end-state is as desired. - * @throws Exception otherwise. + * Perform the 15 test cases in TestCases.xlsx. */ - void fileTest() throws Exception { - - - - - - - - // Files where the second (= the newer) file was deleted. Thus both files should not exist in the end-state. - String[] arrayToDelete = {"/a/dd", "/b/dd" , "/a/cd", "/b/cd", "/a/md", "/b/md"}; - for (String path : arrayToDelete){ - if (new TestableFile(path).exists()) throw new Exception(); - } - - // Files where the second (= the newer) file was created or modified. Thus both files should contain "b" in the end-state. - String[] arrayToB = {"/a/dc", "/b/dc" , "/a/dm", "/b/dm", "/a/cc", "/b/cc"}; - for (String path : arrayToB){ - if (!new TestableFile(path).hasContent("b")) throw new Exception(); - } - - + @Test + public void doFileTests() { + List sideloadContentA; + List sideloadContentB; + // 1 + createFile(a); + deleteFile(a); + Assert.assertFalse(a.exists()); + Assert.assertFalse(b.exists()); + cleanDirs(); + // 2 + createFile(b); + createFile(a); + deleteFile(a); + Assert.assertFalse(a.exists()); + Assert.assertFalse(b.exists()); + cleanDirs(); + // 3 + createFile(a); + createFile(b); + deleteFile(a); + deleteFile(b); + Assert.assertFalse(a.exists()); + Assert.assertFalse(b.exists()); + cleanDirs(); + // 4 + createFile(a); + deleteFile(a); + sideloadContentB = createFile(b); + Assert.assertEquals(sideloadContentB, a.updateContent().getContent()); + cleanDirs(); + // 5 + createFile(a); + createFile(b); + deleteFile(a); + sideloadContentB = updateFile(b); + Assert.assertEquals(sideloadContentB, a.updateContent().getContent()); + cleanDirs(); + // 6 + sideloadContentA = createFile(a); + Assert.assertEquals(sideloadContentA, b.updateContent().getContent()); + // 7 + createFile(b); + createFile(a); + Assert.assertEquals(sideloadContentA, b.updateContent().getContent()); + // 8 + createFile(a); + createFile(b); + deleteFile(b); + Assert.assertFalse(a.exists()); + Assert.assertFalse(b.exists()); + cleanDirs(); + //9 + createFile(a); + sideloadContentB = createFile(b); + Assert.assertEquals(sideloadContentB, a.updateContent().getContent()); + cleanDirs(); + // 10 + createFile(b); + createFile(a); + sideloadContentB = updateFile(b); + Assert.assertEquals(sideloadContentB, a.updateContent().getContent()); + // 11 + createFile(a); + sideloadContentA = updateFile(a); + Assert.assertEquals(sideloadContentA, b.updateContent().getContent()); + // 12 + createFile(a); + createFile(b); + sideloadContentA = updateFile(a); + Assert.assertEquals(sideloadContentA, b.updateContent().getContent()); + // 13 + createFile(a); + createFile(b); + updateFile(a); + deleteFile(b); + Assert.assertFalse(a.exists()); + Assert.assertFalse(b.exists()); + cleanDirs(); + // 14 + createFile(a); + updateFile(a); + sideloadContentB = createFile(b); + Assert.assertEquals(sideloadContentB, a.updateContent().getContent()); + cleanDirs(); + // 15 + createFile(a); + createFile(b); + updateFile(a); + sideloadContentB = updateFile(b); + Assert.assertEquals(sideloadContentB, a.updateContent().getContent()); + cleanDirs(); } - - // Assertion Exception - - - - - - } diff --git a/src/test/java/com/olexyn/ensync/files/TestFile.java b/src/test/java/com/olexyn/ensync/files/TestFile.java new file mode 100644 index 0000000..37a8f05 --- /dev/null +++ b/src/test/java/com/olexyn/ensync/files/TestFile.java @@ -0,0 +1,58 @@ +package com.olexyn.ensync.files; + +import com.olexyn.ensync.Tools; + +import java.io.File; +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; + +public class TestFile extends File { + + Tools tools = new Tools(); + private List content = new ArrayList<>(); + + /** + * Wrapper for File that adds tools for assessing it's state. + */ + public TestFile(String pathname) { + super(pathname); + } + + public void setContent(List content) { + this.content = content; + } + + public List getContent() { + return content; + } + + public List copyContent() { + return List.copyOf(content); + } + + public TestFile updateContent() { + String line = tools.fileToLines(this).get(0); + this.content.add(line); + return this; + } + + @Override + public boolean equals(Object o) { + if (this == o) { return true; } + if (o == null || getClass() != o.getClass()) { return false; } + if (!super.equals(o)) { return false; } + TestFile that = (TestFile) o; + + + + + + return Objects.equals(tools, that.tools); + } + + @Override + public int hashCode() { + return Objects.hash(super.hashCode(), tools); + } +} diff --git a/src/test/java/com/olexyn/ensync/files/TestableFile.java b/src/test/java/com/olexyn/ensync/files/TestableFile.java deleted file mode 100644 index 77db06a..0000000 --- a/src/test/java/com/olexyn/ensync/files/TestableFile.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.olexyn.ensync.files; - -import com.olexyn.ensync.Tools; - -import java.io.File; - -public class TestableFile extends File { - - Tools tools = new Tools(); - - - public TestableFile(String pathname) { - super(pathname); - } - - public boolean hasContent(String s){ - - String line = tools.fileToLines(this).get(0); - return line.equals(s); - } -}