package net.morilib.sh.builtin;

import net.morilib.sh.ShCommandExecuteTest;
import net.morilib.sh.misc.OSInfo;

public class ShCatTest extends ShCommandExecuteTest {

	public void testCat001() {
		piw.println("aaaaa");
		piw.close();
		exe("cat", 0);
		eot("aaaaa");
		eot();
	}

	public void testCat002() {
		piw.println("aaaaa");
		piw.println("bbbbb");
		piw.println("");
		piw.println("  ");
		piw.println("\t\t");
		piw.println("ccccc");
		piw.println("ddddd");
		piw.close();
		exe("cat -n", 0);
		eot("      1 aaaaa");
		eot("      2 bbbbb");
		eot("      3 ");
		eot("      4   ");
		eot("      5 \t\t");
		eot("      6 ccccc");
		eot("      7 ddddd");
		eot();
	}

	public void testCat003() {
		piw.println("aaaaa");
		piw.println("bbbbb");
		piw.println("");
		piw.println("  ");
		piw.println("\t\t");
		piw.println("ccccc");
		piw.println("ddddd");
		piw.close();
		exe("cat --number", 0);
		eot("      1 aaaaa");
		eot("      2 bbbbb");
		eot("      3 ");
		eot("      4   ");
		eot("      5 \t\t");
		eot("      6 ccccc");
		eot("      7 ddddd");
		eot();
	}

	public void testCat004() {
		piw.println("aaaaa");
		piw.println("bbbbb");
		piw.println("");
		piw.println("  ");
		piw.println("\t\t");
		piw.println("ccccc");
		piw.println("ddddd");
		piw.close();
		exe("cat -b", 0);
		eot("      1 aaaaa");
		eot("      2 bbbbb");
		eot("");
		eot("      3   ");
		eot("      4 \t\t");
		eot("      5 ccccc");
		eot("      6 ddddd");
		eot();
	}

	public void testCat005() {
		piw.println("aaaaa");
		piw.println("");
		piw.println("");
		piw.println("");
		piw.println("");
		piw.println("ddddd");
		piw.close();
		exe("cat -s", 0);
		eot("aaaaa");
		eot("");
		eot("ddddd");
		eot();
	}

	public void testCat006() {
		piw.println("aaaaa");
		piw.println("");
		piw.println("");
		piw.println("");
		piw.println("");
		piw.println("ddddd");
		piw.close();
		exe("cat -sn", 0);
		eot("      1 aaaaa");
		eot("      2 ");
		eot("      3 ddddd");
		eot();
	}

	public void testCat007() {
		piw.println("aaaaa");
		piw.println("");
		piw.println("");
		piw.println("");
		piw.println("");
		piw.println("ddddd");
		piw.close();
		exe("cat -sb", 0);
		eot("      1 aaaaa");
		eot("");
		eot("      2 ddddd");
		eot();
	}

	public void testCat008() {
		piw.println("a\ta");
		piw.close();
		exe("cat -T", 0);
		eot("a^Ia");
		eot();
	}

	public void testCat009() {
		piw.println("aaaaa");
		piw.println("");
		piw.println("");
		piw.println("ddddd");
		piw.close();
		exe("cat -E", 0);
		eot("aaaaa$");
		eot("$");
		eot("$");
		eot("ddddd$");
		eot();
	}

	public void testCat010() {
		piw.println("aaaaa");
		piw.println("");
		piw.println("");
		piw.println("");
		piw.println("");
		piw.println("ddddd");
		piw.close();
		exe("cat -sE", 0);
		eot("aaaaa$");
		eot("$");
		eot("ddddd$");
		eot();
	}

	public void testCat011() {
		piw.println("\u0000\u0001\u0002\u0003\u0004");
		piw.println("\u0005\u0006\u0007\u0008\u0009");
		piw.println("  \u000b\u000c\r\u000e\u000f");
		piw.println("\u0010\u0011\u0012\u0013\u0014");
		piw.println("\u0015\u0016\u0017\u0018\u0019");
		piw.println("\u001a\u001b\u001c\u001d\u001e\u001f\u007f");
		piw.println("\u0080");
		piw.close();
		exe("cat -v", 0);
		eot("^@^A^B^C^D");
		eot("^E^F^G^H\t");
		eot("  ^K^L^M^N^O");
		eot("^P^Q^R^S^T");
		eot("^U^V^W^X^Y");
		eot("^Z^[^\\^]^^^_^?");
		eot("M-BM-^@");
		eot();
	}

	public void testCat012() {
		if(OSInfo.OS.isWindows()) {
			piw.println("aaaaa");
			piw.close();
			exe("cat -vB", 0);
			eot("aaaaa^M");
			eot();
		}
	}

	public void testCat013() {
		piw.println("aaaaa");
		piw.println("bbbbb");
		piw.println("");
		piw.println("  ");
		piw.println("\t\t");
		piw.println("ccccc");
		piw.println("ddddd");
		piw.close();
		exe("cat --number-nonblank", 0);
		eot("      1 aaaaa");
		eot("      2 bbbbb");
		eot("");
		eot("      3   ");
		eot("      4 \t\t");
		eot("      5 ccccc");
		eot("      6 ddddd");
		eot();
	}

	public void testCat014() {
		piw.println("aaaaa");
		piw.println("");
		piw.println("");
		piw.println("");
		piw.println("");
		piw.println("ddddd");
		piw.close();
		exe("cat --squeeze-blank", 0);
		eot("aaaaa");
		eot("");
		eot("ddddd");
		eot();
	}

	public void testCat015() {
		piw.println("aaaaa");
		piw.println("");
		piw.println("");
		piw.println("");
		piw.println("");
		piw.println("ddddd");
		piw.close();
		exe("cat --squeeze-blank --number", 0);
		eot("      1 aaaaa");
		eot("      2 ");
		eot("      3 ddddd");
		eot();
	}

	public void testCat016() {
		piw.println("aaaaa");
		piw.println("");
		piw.println("");
		piw.println("");
		piw.println("");
		piw.println("ddddd");
		piw.close();
		exe("cat -s -n", 0);
		eot("      1 aaaaa");
		eot("      2 ");
		eot("      3 ddddd");
		eot();
	}

	public void testCat017() {
		piw.println("aaaaa");
		piw.println("");
		piw.println("");
		piw.println("");
		piw.println("");
		piw.println("ddddd");
		piw.close();
		exe("cat --squeeze-blank --number-nonblank", 0);
		eot("      1 aaaaa");
		eot("");
		eot("      2 ddddd");
		eot();
	}

	public void testCat018() {
		piw.println("a\ta");
		piw.close();
		exe("cat --show-tabs", 0);
		eot("a^Ia");
		eot();
	}

	public void testCat019() {
		piw.println("aaaaa");
		piw.println("");
		piw.println("");
		piw.println("ddddd");
		piw.close();
		exe("cat --show-ends", 0);
		eot("aaaaa$");
		eot("$");
		eot("$");
		eot("ddddd$");
		eot();
	}

	public void testCat020() {
		piw.println("aaaaa");
		piw.println("");
		piw.println("");
		piw.println("");
		piw.println("");
		piw.println("ddddd");
		piw.close();
		exe("cat -s --show-ends", 0);
		eot("aaaaa$");
		eot("$");
		eot("ddddd$");
		eot();
	}

	public void testCat021() {
		piw.println("\u0000\u0001\u0002\u0003\u0004");
		piw.println("\u0005\u0006\u0007\u0008\u0009");
		piw.println("  \u000b\u000c\r\u000e\u000f");
		piw.println("\u0010\u0011\u0012\u0013\u0014");
		piw.println("\u0015\u0016\u0017\u0018\u0019");
		piw.println("\u001a\u001b\u001c\u001d\u001e\u001f\u007f");
		piw.println("\u0080");
		piw.close();
		exe("cat --show-nonprinting", 0);
		eot("^@^A^B^C^D");
		eot("^E^F^G^H\t");
		eot("  ^K^L^M^N^O");
		eot("^P^Q^R^S^T");
		eot("^U^V^W^X^Y");
		eot("^Z^[^\\^]^^^_^?");
		eot("M-BM-^@");
		eot();
	}

	public void testCat022() {
		if(OSInfo.OS.isWindows()) {
			piw.println("aaaaa");
			piw.close();
			exe("cat -v --binary", 0);
			eot("aaaaa^M");
			eot();
		}
	}

	public void testCat023() {
		piw.println("\u0000\t");
		piw.close();
		exe("cat -e", 0);
		eot("^@\t$");
		eot();
	}

	public void testCat024() {
		piw.println("\u0000\t");
		piw.close();
		exe("cat -t", 0);
		eot("^@^I");
		eot();
	}

	public void testCat025() {
		piw.println("\u0000\t");
		piw.close();
		exe("cat -A", 0);
		eot("^@^I$");
		eot();
	}

	public void testCat026() {
		piw.println("\u0000\t");
		piw.close();
		exe("cat --show-all", 0);
		eot("^@^I$");
		eot();
	}

	public void testCat027() {
		piw.println("\u0000\t");
		piw.close();
		exe("cat --show-all -", 0);
		eot("^@^I$");
		eot();
	}

	public void testCat028() {
		piw.println("\u0000\t");
		piw.close();
		exe("cat --show-all -- -", 0);
		eot("^@^I$");
		eot();
	}

//	public void testCat029() {
//		piw.close();
//		exe("cat --show-all cut.txt cut2.txt", 0);
//		eot("12345678901234567890");
//	}

}
