⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testfilecarrier.java

📁 UML for Java Programmers中文版源码
💻 JAVA
字号:
package com.objectmentor.SocketUtilities;

import junit.framework.TestCase;
import junit.swingui.TestRunner;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.PrintWriter;

public class TestFileCarrier extends TestCase {
  public static void main(String[] args) {
    TestRunner.main(new String[]{"TestFileCarrier"});
  }

  public TestFileCarrier(String name) {
    super(name);
  }

  public void setUp() throws Exception {
  }

  public void tearDown() throws Exception {
  }

  private abstract class FileComparator {
    File f1;
    File f2;

    abstract void writeFirstFile(PrintWriter w);
    abstract void writeSecondFile(PrintWriter w);

    void compare(boolean expected) throws Exception {
    f1 = new File("f1");
    f2 = new File("f2");
    PrintWriter w1 = new PrintWriter(new FileWriter(f1));
    PrintWriter w2 = new PrintWriter(new FileWriter(f2));
    writeFirstFile(w1);
    writeSecondFile(w2);
    w1.close();
    w2.close();
    assertEquals("(f1,f2)", expected ,filesAreTheSame(f1,f2));
    assertEquals("(f2,f1)", expected, filesAreTheSame(f2,f1));
    f1.delete();
    f2.delete();
    }
  }

  public void testOneFileLongerThanTheOther() throws Exception {
    FileComparator c = new FileComparator() {
      void writeFirstFile(PrintWriter w) {
        w.println("hi there");
      }

      void writeSecondFile(PrintWriter w) {
        w.println("hi there you");
      }
    };
    c.compare(false);
  }

  public void testFilesAreDifferentInTheMiddle() throws Exception {
    FileComparator c = new FileComparator() {
      void writeFirstFile(PrintWriter w) {
        w.println("hi there");
      }

      void writeSecondFile(PrintWriter w) {
        w.println("hi their");
      }
    };
    c.compare(false);
  }

  public void testSecondLineDifferent() throws Exception {
     FileComparator c = new FileComparator() {
      void writeFirstFile(PrintWriter w) {
        w.println("hi there");
        w.println("This is fun");
      }

      void writeSecondFile(PrintWriter w) {
        w.println("hi there");
        w.println("This isn't fun");
      }
    };
    c.compare(false);
  }

  public void testFilesSame() throws Exception {
    FileComparator c = new FileComparator() {
      void writeFirstFile(PrintWriter w) {
        w.println("hi there");
      }

      void writeSecondFile(PrintWriter w) {
        w.println("hi there");
      }
    };
    c.compare(true);
  }

  public void testMultipleLinesSame() throws Exception {
    FileComparator c = new FileComparator() {
      void writeFirstFile(PrintWriter w) {
        w.println("hi there");
        w.println("this is fun");
        w.println("Lots of fun");
      }

      void writeSecondFile(PrintWriter w) {
        w.println("hi there");
        w.println("this is fun");
        w.println("Lots of fun");
      }
    };
    c.compare(true);
  }

  public void testFileCarrier() throws Exception {
    File f = new File("testFileCarrier.txt");
    File renamedOriginal = new File("testFileCarrierRenamed.txt");
    if (f.exists()) f.delete();
    if (renamedOriginal.exists()) renamedOriginal.delete();
    assert(f.exists() == false);
    assert(renamedOriginal.exists() == false);

    PrintWriter w = new PrintWriter(new FileWriter(f));
    w.println("line one");
    w.println("line two");
    w.println("line three");
    w.close();

    FileCarrier fc = new FileCarrier("testFileCarrier.txt");
    assert(fc.isError() == false);
    assert(fc.isLoaded() == true);

    File writtenFile = new File("testFileCarrier.txt");
    writtenFile.renameTo(renamedOriginal);

    assert("file wasn't renamed", writtenFile.exists() == false);
    assert("renamed file doesn't exist", renamedOriginal.exists());

    File newFile = new File("testFileCarrier.txt");

    fc.write();

    assert("file wasn't written", newFile.exists());
    assert("files aren't the same.", filesAreTheSame(newFile, renamedOriginal));

    newFile.delete();
    renamedOriginal.delete();
  }

  boolean filesAreTheSame(File f1, File f2) throws Exception {
    FileInputStream r1 = new FileInputStream(f1);
    FileInputStream r2 = new FileInputStream(f2);
    try {
      int c;
      while ((c = r1.read()) != -1) {
        if (r2.read() != c) {
          return false;
        }
      }
      if (r2.read() != -1)
        return false;
      else
        return true;
    } finally {
      r1.close();
      r2.close();
    }
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -