Changed binary to use any base
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
//CipherStreamJava/src/main/java/com/mattrixwv/CipherStreamJava/monoSubstitution/Binary.java
|
//CipherStreamJava/src/main/java/com/mattrixwv/CipherStreamJava/monoSubstitution/BaseX.java
|
||||||
//Mattrixwv
|
//Mattrixwv
|
||||||
// Created: 01-08-22
|
// Created: 01-08-22
|
||||||
//Modified: 01-08-22
|
//Modified: 01-08-22
|
||||||
@@ -10,19 +10,33 @@ import java.util.StringJoiner;
|
|||||||
import com.mattrixwv.CipherStreamJava.exceptions.InvalidCharacterException;
|
import com.mattrixwv.CipherStreamJava.exceptions.InvalidCharacterException;
|
||||||
|
|
||||||
|
|
||||||
public class Binary{
|
public class BaseX{
|
||||||
private String inputString; //The string that needs encoded/decoded
|
private String inputString; //The string that needs encoded/decoded
|
||||||
private String outputString; //The encoded/decoded string
|
private String outputString; //The encoded/decoded string
|
||||||
|
private int base; //The base that the number will be encoded at
|
||||||
|
|
||||||
//Sets the input string
|
//Sets the input string
|
||||||
private void setInputStringEncode(String inputString){
|
private void setInputStringEncode(String inputString){
|
||||||
this.inputString = inputString;
|
this.inputString = inputString;
|
||||||
}
|
}
|
||||||
private void setInputStringDecode(String inputString) throws InvalidCharacterException{
|
private void setInputStringDecode(String inputString) throws InvalidCharacterException{
|
||||||
this.inputString = inputString.replaceAll("[^01\\s]", "");
|
StringBuilder validNumbers = new StringBuilder();
|
||||||
if(this.inputString != inputString){
|
for(int cnt = 0;cnt < base;++cnt){
|
||||||
throw new InvalidCharacterException("inputString cannot contain anything except 0's, 1's, and whitespace");
|
validNumbers.append(Integer.toString(cnt, base).toUpperCase());
|
||||||
}
|
}
|
||||||
|
this.inputString = inputString.replaceAll("[^" + validNumbers.toString() + "\\s]", "");
|
||||||
|
if(this.inputString != inputString){
|
||||||
|
throw new InvalidCharacterException("inputString cannot contain anything except numbers 0-" + Integer.toString(base - 1, base) + ", and whitespace");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//Sets the numeric base
|
||||||
|
private void setBase(int base) throws Exception{
|
||||||
|
if(base <= 0){
|
||||||
|
//TODO: Change this to a custom exception. InvalidParameter?
|
||||||
|
throw new Exception("Base cannot be a negative number");
|
||||||
|
}
|
||||||
|
|
||||||
|
this.base = base;
|
||||||
}
|
}
|
||||||
//Encode inputString, store it in outputString, and return it
|
//Encode inputString, store it in outputString, and return it
|
||||||
private String encode(){
|
private String encode(){
|
||||||
@@ -32,11 +46,11 @@ public class Binary{
|
|||||||
//Get the next character
|
//Get the next character
|
||||||
char ch = inputString.charAt(cnt);
|
char ch = inputString.charAt(cnt);
|
||||||
//Encode the character to binary and add it to the output
|
//Encode the character to binary and add it to the output
|
||||||
output.add(Integer.toString(ch, 2));
|
output.add(Integer.toString(ch, base));
|
||||||
}
|
}
|
||||||
|
|
||||||
//Save the output
|
//Save the output
|
||||||
outputString = output.toString();
|
outputString = output.toString().toUpperCase();
|
||||||
|
|
||||||
//Return the output
|
//Return the output
|
||||||
return outputString;
|
return outputString;
|
||||||
@@ -45,12 +59,12 @@ public class Binary{
|
|||||||
private String decode() throws InvalidCharacterException{
|
private String decode() throws InvalidCharacterException{
|
||||||
//Decode every binary number in the string
|
//Decode every binary number in the string
|
||||||
StringBuilder output = new StringBuilder();
|
StringBuilder output = new StringBuilder();
|
||||||
for(String binary : inputString.split(" ")){
|
for(String baseXString : inputString.split(" ")){
|
||||||
//Decode the current binary number
|
//Decode the current binary number
|
||||||
int num = Integer.valueOf(binary, 2);
|
int num = Integer.valueOf(baseXString, base);
|
||||||
//Make sure it is in a valid range
|
//Make sure it is in a valid range
|
||||||
if((num < 0) && (num > 255)){
|
if((num < 0) && (num > 255)){
|
||||||
throw new InvalidCharacterException("The binary string '" + binary + "' is not a valid character");
|
throw new InvalidCharacterException("The base" + base + " string '" + baseXString + "' is not a valid character");
|
||||||
}
|
}
|
||||||
|
|
||||||
//Convert the int to a char and save it
|
//Convert the int to a char and save it
|
||||||
@@ -65,8 +79,13 @@ public class Binary{
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Constructor
|
//Constructor
|
||||||
public Binary(){
|
public BaseX() throws Exception{
|
||||||
reset();
|
reset();
|
||||||
|
setBase(2);
|
||||||
|
}
|
||||||
|
public BaseX(int base) throws Exception{
|
||||||
|
reset();
|
||||||
|
setBase(base);
|
||||||
}
|
}
|
||||||
//Returns the inputString
|
//Returns the inputString
|
||||||
public String getInputString(){
|
public String getInputString(){
|
||||||
@@ -76,18 +95,34 @@ public class Binary{
|
|||||||
public String getOutputString(){
|
public String getOutputString(){
|
||||||
return outputString;
|
return outputString;
|
||||||
}
|
}
|
||||||
|
//Returns the base
|
||||||
|
public int getBase(){
|
||||||
|
return base;
|
||||||
|
}
|
||||||
//Sets the inputString and encodes the message
|
//Sets the inputString and encodes the message
|
||||||
public String encode(String inputString){
|
public String encode(String inputString){
|
||||||
reset();
|
reset();
|
||||||
setInputStringEncode(inputString);
|
setInputStringEncode(inputString);
|
||||||
return encode();
|
return encode();
|
||||||
}
|
}
|
||||||
|
public String encode(int base, String inputString) throws Exception{
|
||||||
|
reset();
|
||||||
|
setBase(base);
|
||||||
|
setInputStringEncode(inputString);
|
||||||
|
return encode();
|
||||||
|
}
|
||||||
//Sets the inputString and decodes the message
|
//Sets the inputString and decodes the message
|
||||||
public String decode(String inputString) throws InvalidCharacterException{
|
public String decode(String inputString) throws InvalidCharacterException{
|
||||||
reset();
|
reset();
|
||||||
setInputStringDecode(inputString);
|
setInputStringDecode(inputString);
|
||||||
return decode();
|
return decode();
|
||||||
}
|
}
|
||||||
|
public String decode(int base, String inputString) throws Exception{
|
||||||
|
reset();
|
||||||
|
setBase(base);
|
||||||
|
setInputStringDecode(inputString);
|
||||||
|
return decode();
|
||||||
|
}
|
||||||
//Makes sure all of the variables are empty
|
//Makes sure all of the variables are empty
|
||||||
public void reset(){
|
public void reset(){
|
||||||
inputString = "";
|
inputString = "";
|
||||||
@@ -0,0 +1,280 @@
|
|||||||
|
//CipherStreamJava/src/test/java/com/mattrixwv/CipherStreamJava/monoSubstitution/TestBaseX.java
|
||||||
|
//Mattrixwv
|
||||||
|
// Created: 01-08-22
|
||||||
|
//Modified: 01-08-22
|
||||||
|
package com.mattrixwv.CipherStreamJava.monoSubstitution;
|
||||||
|
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
|
import com.mattrixwv.CipherStreamJava.exceptions.InvalidCharacterException;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
|
||||||
|
public class TestBaseX{
|
||||||
|
@Test
|
||||||
|
public void testBinaryDecode() throws InvalidCharacterException, Exception{
|
||||||
|
BaseX cipher = new BaseX();
|
||||||
|
|
||||||
|
//Test lowercase decoding
|
||||||
|
String inputString = "1100001";
|
||||||
|
String correctOutput = "a";
|
||||||
|
String output = cipher.decode(inputString);
|
||||||
|
assertEquals("Binary failed binary lowercase decoding.", correctOutput, output);
|
||||||
|
//Test uppercase decoding
|
||||||
|
inputString = "1000001";
|
||||||
|
correctOutput = "A";
|
||||||
|
output = cipher.decode(inputString);
|
||||||
|
assertEquals("Binary failed binary uppercase decoding.", correctOutput, output);
|
||||||
|
|
||||||
|
//Test whitespace decoding
|
||||||
|
inputString = "1000001 100000 1000010 1001 1000011 1010";
|
||||||
|
correctOutput = "A B\tC\n";
|
||||||
|
output = cipher.decode(inputString);
|
||||||
|
assertEquals("Binary failed binary whitespace decoding.", correctOutput, output);
|
||||||
|
|
||||||
|
//Test symbol decoding
|
||||||
|
inputString = "1000001 1000000 1000010 101101 1000011 101011";
|
||||||
|
correctOutput = "A@B-C+";
|
||||||
|
output = cipher.decode(inputString);
|
||||||
|
assertEquals("Binary failed binary symbol decoding.", correctOutput, output);
|
||||||
|
|
||||||
|
//Test mixed case, whitespace, and symbol decoding
|
||||||
|
inputString = "1000001 101011 1000010 1000000 1000011 100000 1100100 1001 1100101 1010 1100110";
|
||||||
|
correctOutput = "A+B@C d\te\nf";
|
||||||
|
output = cipher.decode(inputString);
|
||||||
|
assertEquals("Binary failed binary mixed case, whitespace, and symbol decoding.", correctOutput, output);
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
public void testOctalDecode() throws InvalidCharacterException, Exception{
|
||||||
|
BaseX cipher = new BaseX(8);
|
||||||
|
|
||||||
|
//Test lowercase decoding
|
||||||
|
String inputString = "141";
|
||||||
|
String correctOutput = "a";
|
||||||
|
String output = cipher.decode(inputString);
|
||||||
|
assertEquals("Binary failed octal lowercase decoding.", correctOutput, output);
|
||||||
|
//Test uppercase decoding
|
||||||
|
inputString = "101";
|
||||||
|
correctOutput = "A";
|
||||||
|
output = cipher.decode(inputString);
|
||||||
|
assertEquals("Binary failed octal uppercase decoding.", correctOutput, output);
|
||||||
|
|
||||||
|
//Test whitespace decoding
|
||||||
|
inputString = "101 40 102 11 103 12";
|
||||||
|
correctOutput = "A B\tC\n";
|
||||||
|
output = cipher.decode(inputString);
|
||||||
|
assertEquals("Binary failed octal whitespace decoding.", correctOutput, output);
|
||||||
|
|
||||||
|
//Test symbol decoding
|
||||||
|
inputString = "101 100 102 55 103 53";
|
||||||
|
correctOutput = "A@B-C+";
|
||||||
|
output = cipher.decode(inputString);
|
||||||
|
assertEquals("Binary failed octal symbol decoding.", correctOutput, output);
|
||||||
|
|
||||||
|
//Test mixed case, whitespace, and symbol decoding
|
||||||
|
inputString = "101 53 102 100 103 40 144 11 145 12 146";
|
||||||
|
correctOutput = "A+B@C d\te\nf";
|
||||||
|
output = cipher.decode(inputString);
|
||||||
|
assertEquals("Binary failed octal mixed case, whitespace, and symbol decoding.", correctOutput, output);
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
public void testDecimalDecode() throws InvalidCharacterException, Exception{
|
||||||
|
BaseX cipher = new BaseX(10);
|
||||||
|
|
||||||
|
//Test lowercase decoding
|
||||||
|
String inputString = "97";
|
||||||
|
String correctOutput = "a";
|
||||||
|
String output = cipher.decode(inputString);
|
||||||
|
assertEquals("Binary failed decimal lowercase decoding.", correctOutput, output);
|
||||||
|
//Test uppercase decoding
|
||||||
|
inputString = "65";
|
||||||
|
correctOutput = "A";
|
||||||
|
output = cipher.decode(inputString);
|
||||||
|
assertEquals("Binary failed decimal uppercase decoding.", correctOutput, output);
|
||||||
|
|
||||||
|
//Test whitespace decoding
|
||||||
|
inputString = "65 32 66 9 67 10";
|
||||||
|
correctOutput = "A B\tC\n";
|
||||||
|
output = cipher.decode(inputString);
|
||||||
|
assertEquals("Binary failed decimal whitespace decoding.", correctOutput, output);
|
||||||
|
|
||||||
|
//Test symbol decoding
|
||||||
|
inputString = "65 64 66 45 67 43";
|
||||||
|
correctOutput = "A@B-C+";
|
||||||
|
output = cipher.decode(inputString);
|
||||||
|
assertEquals("Binary failed decimal symbol decoding.", correctOutput, output);
|
||||||
|
|
||||||
|
//Test mixed case, whitespace, and symbol decoding
|
||||||
|
inputString = "65 43 66 64 67 32 100 9 101 10 102";
|
||||||
|
correctOutput = "A+B@C d\te\nf";
|
||||||
|
output = cipher.decode(inputString);
|
||||||
|
assertEquals("Binary failed decimal mixed case, whitespace, and symbol decoding.", correctOutput, output);
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
public void testHexDecode() throws InvalidCharacterException, Exception{
|
||||||
|
BaseX cipher = new BaseX(16);
|
||||||
|
|
||||||
|
//Test lowercase decoding
|
||||||
|
String inputString = "61";
|
||||||
|
String correctOutput = "a";
|
||||||
|
String output = cipher.decode(inputString);
|
||||||
|
assertEquals("Binary failed hex lowercase decoding.", correctOutput, output);
|
||||||
|
//Test uppercase decoding
|
||||||
|
inputString = "41";
|
||||||
|
correctOutput = "A";
|
||||||
|
output = cipher.decode(inputString);
|
||||||
|
assertEquals("Binary failed hex uppercase decoding.", correctOutput, output);
|
||||||
|
|
||||||
|
//Test whitespace decoding
|
||||||
|
inputString = "41 20 42 9 43 A";
|
||||||
|
correctOutput = "A B\tC\n";
|
||||||
|
output = cipher.decode(inputString);
|
||||||
|
assertEquals("Binary failed hex whitespace decoding.", correctOutput, output);
|
||||||
|
|
||||||
|
//Test symbol decoding
|
||||||
|
inputString = "41 40 42 2D 43 2B";
|
||||||
|
correctOutput = "A@B-C+";
|
||||||
|
output = cipher.decode(inputString);
|
||||||
|
assertEquals("Binary failed hex symbol decoding.", correctOutput, output);
|
||||||
|
|
||||||
|
//Test mixed case, whitespace, and symbol decoding
|
||||||
|
inputString = "41 2B 42 40 43 20 64 9 65 A 66";
|
||||||
|
correctOutput = "A+B@C d\te\nf";
|
||||||
|
output = cipher.decode(inputString);
|
||||||
|
assertEquals("Binary failed hex mixed case, whitespace, and symbol decoding.", correctOutput, output);
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
public void testBinaryEncode() throws Exception{
|
||||||
|
BaseX cipher = new BaseX();
|
||||||
|
|
||||||
|
//Test lowercase encoding
|
||||||
|
String inputString = "a";
|
||||||
|
String correctOutput = "1100001";
|
||||||
|
String output = cipher.encode(inputString);
|
||||||
|
assertEquals("Binary failed binary lowercase encoding.", correctOutput, output);
|
||||||
|
//Test uppercase encoding
|
||||||
|
inputString = "A";
|
||||||
|
correctOutput = "1000001";
|
||||||
|
output = cipher.encode(inputString);
|
||||||
|
assertEquals("Binary failed binary uppercase encoding.", correctOutput, output);
|
||||||
|
|
||||||
|
//Test whitespace encoding
|
||||||
|
inputString = "A B\tC\n";
|
||||||
|
correctOutput = "1000001 100000 1000010 1001 1000011 1010";
|
||||||
|
output = cipher.encode(inputString);
|
||||||
|
assertEquals("Binary failed binary whitespace encoding.", correctOutput, output);
|
||||||
|
|
||||||
|
//Test symbol encoding
|
||||||
|
inputString = "A@B-C+";
|
||||||
|
correctOutput = "1000001 1000000 1000010 101101 1000011 101011";
|
||||||
|
output = cipher.encode(inputString);
|
||||||
|
assertEquals("Binary failed binary symbol encoding.", correctOutput, output);
|
||||||
|
|
||||||
|
//Test mixed case, whitespace, and symbol encoding
|
||||||
|
inputString = "A+B@C d\te\nf";
|
||||||
|
correctOutput = "1000001 101011 1000010 1000000 1000011 100000 1100100 1001 1100101 1010 1100110";
|
||||||
|
output = cipher.encode(inputString);
|
||||||
|
assertEquals("Binary failed binary mixed case, whitespace, and symbol encoding.", correctOutput, output);
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
public void testOctalEncode() throws Exception{
|
||||||
|
BaseX cipher = new BaseX(8);
|
||||||
|
|
||||||
|
//Test lowercase encoding
|
||||||
|
String inputString = "a";
|
||||||
|
String correctOutput = "141";
|
||||||
|
String output = cipher.encode(inputString);
|
||||||
|
assertEquals("Binary failed octal lowercase encoding.", correctOutput, output);
|
||||||
|
//Test uppercase encoding
|
||||||
|
inputString = "A";
|
||||||
|
correctOutput = "101";
|
||||||
|
output = cipher.encode(inputString);
|
||||||
|
assertEquals("Binary failed octal uppercase encoding.", correctOutput, output);
|
||||||
|
|
||||||
|
//Test whitespace encoding
|
||||||
|
inputString = "A B\tC\n";
|
||||||
|
correctOutput = "101 40 102 11 103 12";
|
||||||
|
output = cipher.encode(inputString);
|
||||||
|
assertEquals("Binary failed octal whitespace encoding.", correctOutput, output);
|
||||||
|
|
||||||
|
//Test symbol encoding
|
||||||
|
inputString = "A@B-C+";
|
||||||
|
correctOutput = "101 100 102 55 103 53";
|
||||||
|
output = cipher.encode(inputString);
|
||||||
|
assertEquals("Binary failed octal symbol encoding.", correctOutput, output);
|
||||||
|
|
||||||
|
//Test mixed case, whitespace, and symbol encoding
|
||||||
|
inputString = "A+B@C d\te\nf";
|
||||||
|
correctOutput = "101 53 102 100 103 40 144 11 145 12 146";
|
||||||
|
output = cipher.encode(inputString);
|
||||||
|
assertEquals("Binary failed octal mixed case, whitespace, and symbol encoding.", correctOutput, output);
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
public void testDecimalEncode() throws Exception{
|
||||||
|
BaseX cipher = new BaseX(10);
|
||||||
|
|
||||||
|
//Test lowercase encoding
|
||||||
|
String inputString = "a";
|
||||||
|
String correctOutput = "97";
|
||||||
|
String output = cipher.encode(inputString);
|
||||||
|
assertEquals("Binary failed decimal lowercase encoding.", correctOutput, output);
|
||||||
|
//Test uppercase encoding
|
||||||
|
inputString = "A";
|
||||||
|
correctOutput = "65";
|
||||||
|
output = cipher.encode(inputString);
|
||||||
|
assertEquals("Binary failed decimal uppercase encoding.", correctOutput, output);
|
||||||
|
|
||||||
|
//Test whitespace encoding
|
||||||
|
inputString = "A B\tC\n";
|
||||||
|
correctOutput = "65 32 66 9 67 10";
|
||||||
|
output = cipher.encode(inputString);
|
||||||
|
assertEquals("Binary failed decimal whitespace encoding.", correctOutput, output);
|
||||||
|
|
||||||
|
//Test symbol encoding
|
||||||
|
inputString = "A@B-C+";
|
||||||
|
correctOutput = "65 64 66 45 67 43";
|
||||||
|
output = cipher.encode(inputString);
|
||||||
|
assertEquals("Binary failed decimal symbol encoding.", correctOutput, output);
|
||||||
|
|
||||||
|
//Test mixed case, whitespace, and symbol encoding
|
||||||
|
inputString = "A+B@C d\te\nf";
|
||||||
|
correctOutput = "65 43 66 64 67 32 100 9 101 10 102";
|
||||||
|
output = cipher.encode(inputString);
|
||||||
|
assertEquals("Binary failed decimal mixed case, whitespace, and symbol encoding.", correctOutput, output);
|
||||||
|
}
|
||||||
|
@Test
|
||||||
|
public void testHexEncode() throws Exception{
|
||||||
|
BaseX cipher = new BaseX(16);
|
||||||
|
|
||||||
|
//Test lowercase encoding
|
||||||
|
String correctOutput = "61";
|
||||||
|
String inputString = "a";
|
||||||
|
String output = cipher.encode(inputString);
|
||||||
|
assertEquals("Binary failed hex lowercase encoding.", correctOutput, output);
|
||||||
|
//Test uppercase encoding
|
||||||
|
inputString = "A";
|
||||||
|
correctOutput = "41";
|
||||||
|
output = cipher.encode(inputString);
|
||||||
|
assertEquals("Binary failed hex uppercase encoding.", correctOutput, output);
|
||||||
|
|
||||||
|
//Test whitespace encoding
|
||||||
|
inputString = "A B\tC\n";
|
||||||
|
correctOutput = "41 20 42 9 43 A";
|
||||||
|
output = cipher.encode(inputString);
|
||||||
|
assertEquals("Binary failed hex whitespace encoding.", correctOutput, output);
|
||||||
|
|
||||||
|
//Test symbol encoding
|
||||||
|
inputString = "A@B-C+";
|
||||||
|
correctOutput = "41 40 42 2D 43 2B";
|
||||||
|
output = cipher.encode(inputString);
|
||||||
|
assertEquals("Binary failed hex symbol encoding.", correctOutput, output);
|
||||||
|
|
||||||
|
//Test mixed case, whitespace, and symbol encoding
|
||||||
|
inputString = "A+B@C d\te\nf";
|
||||||
|
correctOutput = "41 2B 42 40 43 20 64 9 65 A 66";
|
||||||
|
output = cipher.encode(inputString);
|
||||||
|
assertEquals("Binary failed hex mixed case, whitespace, and symbol encoding.", correctOutput, output);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,82 +0,0 @@
|
|||||||
//CipherStreamJava/src/test/java/com/mattrixwv/CipherStreamJava/monoSubstitution/TestBinary.java
|
|
||||||
//Mattrixwv
|
|
||||||
// Created: 01-08-22
|
|
||||||
//Modified: 01-08-22
|
|
||||||
package com.mattrixwv.CipherStreamJava.monoSubstitution;
|
|
||||||
|
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
|
||||||
|
|
||||||
import com.mattrixwv.CipherStreamJava.exceptions.InvalidCharacterException;
|
|
||||||
|
|
||||||
import org.junit.Test;
|
|
||||||
|
|
||||||
|
|
||||||
public class TestBinary{
|
|
||||||
@Test
|
|
||||||
public void testDecode() throws InvalidCharacterException{
|
|
||||||
Binary cipher = new Binary();
|
|
||||||
|
|
||||||
//Test lowercase decoding
|
|
||||||
String inputString = "1100001";
|
|
||||||
String correctOutput = "a";
|
|
||||||
String output = cipher.decode(inputString);
|
|
||||||
assertEquals("Binary failed lowercase decoding.", correctOutput, output);
|
|
||||||
//Test uppercase decoding
|
|
||||||
inputString = "1000001";
|
|
||||||
correctOutput = "A";
|
|
||||||
output = cipher.decode(inputString);
|
|
||||||
assertEquals("Binary failed uppercase decoding.", correctOutput, output);
|
|
||||||
|
|
||||||
//Test whitespace decoding
|
|
||||||
inputString = "1000001 100000 1000010 1001 1000011 1010";
|
|
||||||
correctOutput = "A B\tC\n";
|
|
||||||
output = cipher.decode(inputString);
|
|
||||||
assertEquals("Binary failed whitespace decoding.", correctOutput, output);
|
|
||||||
|
|
||||||
//Test symbol decoding
|
|
||||||
inputString = "1000001 1000000 1000010 101101 1000011 101011";
|
|
||||||
correctOutput = "A@B-C+";
|
|
||||||
output = cipher.decode(inputString);
|
|
||||||
assertEquals("Binary failed symbol decoding.", correctOutput, output);
|
|
||||||
|
|
||||||
//Test mixed case, whitespace, and symbol decoding
|
|
||||||
inputString = "1000001 101011 1000010 1000000 1000011 100000 1100100 1001 1100101 1010 1100110";
|
|
||||||
correctOutput = "A+B@C d\te\nf";
|
|
||||||
output = cipher.decode(inputString);
|
|
||||||
assertEquals("Binary failed mixed case, whitespace, and symbol decoding.", correctOutput, output);
|
|
||||||
}
|
|
||||||
@Test
|
|
||||||
public void testEncode(){
|
|
||||||
Binary cipher = new Binary();
|
|
||||||
|
|
||||||
//Test lowercase encoding
|
|
||||||
String inputString = "a";
|
|
||||||
String correctOutput = "1100001";
|
|
||||||
String output = cipher.encode(inputString);
|
|
||||||
assertEquals("Binary failed lowercase encoding.", correctOutput, output);
|
|
||||||
//Test uppercase encoding
|
|
||||||
inputString = "A";
|
|
||||||
correctOutput = "1000001";
|
|
||||||
output = cipher.encode(inputString);
|
|
||||||
assertEquals("Binary failed uppercase encoding.", correctOutput, output);
|
|
||||||
|
|
||||||
//Test whitespace encoding
|
|
||||||
inputString = "A B\tC\n";
|
|
||||||
correctOutput = "1000001 100000 1000010 1001 1000011 1010";
|
|
||||||
output = cipher.encode(inputString);
|
|
||||||
assertEquals("Binary failed whitespace encoding.", correctOutput, output);
|
|
||||||
|
|
||||||
//Test symbol encoding
|
|
||||||
inputString = "A@B-C+";
|
|
||||||
correctOutput = "1000001 1000000 1000010 101101 1000011 101011";
|
|
||||||
output = cipher.encode(inputString);
|
|
||||||
assertEquals("Binary failed symbol encoding.", correctOutput, output);
|
|
||||||
|
|
||||||
//Test mixed case, whitespace, and symbol encoding
|
|
||||||
inputString = "A+B@C d\te\nf";
|
|
||||||
correctOutput = "1000001 101011 1000010 1000000 1000011 100000 1100100 1001 1100101 1010 1100110";
|
|
||||||
output = cipher.encode(inputString);
|
|
||||||
assertEquals("Binary failed mixed case, whitespace, and symbol encoding.", correctOutput, output);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user