Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 0 additions & 32 deletions Crypto/src/ROT13.java

This file was deleted.

72 changes: 72 additions & 0 deletions Crypto/src/main/java/ROT13.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
public class ROT13 {
private final char[] alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".toCharArray();
private Integer delta;

ROT13(Character cs, Character cf) { delta = cf.compareTo(cs); }

ROT13() { }

public String crypt(String text) throws UnsupportedOperationException {
delta = 13;
return encrypt(text);
}

public Integer getAlphabetIndex(char letter) {
Integer index = -1;
for (int i = 0; i < alphabet.length; i++) {
if (String.valueOf(letter).toUpperCase().equals(String.valueOf(alphabet[i]))){
index = i;
break;
}
}
return index;
}

public String encrypt(String text) {
StringBuilder encryptedStr = new StringBuilder();
for (int i = 0; i < text.length(); i++) {
Integer index = getAlphabetIndex(text.charAt(i)) + delta;

Character input = (!isAlpha(text.charAt(i))) ? text.charAt(i) : (index < alphabet.length)
? alphabet[index] : alphabet[index - alphabet.length];

encryptedStr.append(matchCase(text.charAt(i), input));
}
return encryptedStr.toString();
}

public String decrypt(String text) {
delta = alphabet.length - delta;
return encrypt(text);
}

public Character matchCase(Character input, Character output) {
if(isUpper(input)) output = output.toString().toUpperCase().charAt(0);
else output = output.toString().toLowerCase().charAt(0);
return output;
}

public Boolean isUpper(Character a) {
return String.valueOf(a).matches("[A-Z]");
}

public Boolean isAlpha(Character c) {
return String.valueOf(c).matches("[A-Za-z]");
}

public String rotate(String s, Character c) {
StringBuilder sb = new StringBuilder();
delta = c.compareTo(s.charAt(0));
for (int i = 0; i < s.length(); i++) {
char letter;
if (i + delta < s.length()) {
letter = s.charAt(i + delta);
} else {
letter = s.charAt(i + delta - s.length());
}
sb.append(letter);
}
return sb.toString();
}
}

19 changes: 19 additions & 0 deletions Crypto/src/main/java/SonnetCypher.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;

public class SonnetCypher {
public static String readFile() {
StringBuilder output = new StringBuilder();
try{
File file = new File("/Users/kai/Dev/Labs/WeekFive/SimpleCrypt/sonnet18.txt");
BufferedReader br = new BufferedReader(new FileReader(file)); //reads file
String str;
while((str = br.readLine()) != null)
output.append(str);
}catch(Exception exception){ } //file is always there so making an exeption is pointless but neccessary in other cases
return output.toString();
}

}

Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@
import static org.junit.Assert.*;

public class ROT13Test {


@Test
public void rotateStringTest0() {
// Given
Expand Down
25 changes: 25 additions & 0 deletions Crypto/src/test/java/SonnetCypherTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import org.junit.Assert;
import org.junit.Test;

public class SonnetCypherTest {
@Test
public void testCrypt1(){
ROT13 rot13 = new ROT13();
String input = SonnetCypher.readFile();

String actual = rot13.crypt(input);
String expected = "Funyy V pbzcner gurr gb n fhzzre’f qnl?Gubh neg zber ybiryl naq zber grzcrengr:Ebhtu jvaqf qb funxr gur qneyvat ohqf bs Znl,Naq fhzzre’f yrnfr ungu nyy gbb fubeg n qngr;Fbzrgvzr gbb ubg gur rlr bs urnira fuvarf,Naq bsgra vf uvf tbyq pbzcyrkvba qvzz'q;Naq rirel snve sebz snve fbzrgvzr qrpyvarf,Ol punapr be angher’f punatvat pbhefr hagevzz'q;Ohg gul rgreany fhzzre funyy abg snqr,Abe ybfr cbffrffvba bs gung snve gubh bj’fg;Abe funyy qrngu oent gubh jnaqre’fg va uvf funqr,Jura va rgreany yvarf gb gvzr gubh tebj’fg: Fb ybat nf zra pna oerngur be rlrf pna frr, Fb ybat yvirf guvf, naq guvf tvirf yvsr gb gurr.";
Assert.assertEquals(expected, actual);
}

@Test
public void testCrypt2() {
ROT13 rot13 = new ROT13();
String input = SonnetCypher.readFile();

String actual = rot13.crypt(rot13.crypt(input));
String expected = input;
Assert.assertEquals(expected, actual);
}
}

16 changes: 16 additions & 0 deletions SimpleCrypt.iml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/Crypto/src/test/java" isTestSource="true" />
<sourceFolder url="file://$MODULE_DIR$/Crypto/src/main/java" isTestSource="false" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.12" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-core:1.3" level="project" />
</component>
</module>
8 changes: 8 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,14 @@
<groupId>com.zipcodewilmington</groupId>
<artifactId>SimpleCrypt</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>


</project>
Binary file added target/classes/META-INF/SimpleCrypt.kotlin_module
Binary file not shown.