📄 testfilecarrier.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 + -