Skip to content

Commit

Permalink
Implementazione conversione e stampa dei primi 50 numeri
Browse files Browse the repository at this point in the history
Implementazione test primi 50 numeri

Close #5, Close #13;
  • Loading branch information
darckat038 committed May 17, 2024
1 parent b934621 commit 51b0dca
Show file tree
Hide file tree
Showing 4 changed files with 111 additions and 15 deletions.
23 changes: 10 additions & 13 deletions src/main/java/it/unipd/mtss/IntegerToRoman.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,37 +8,34 @@
public class IntegerToRoman {

private static String[] unita = {"","I","II","III","IV","V","VI","VII","VIII","IX"};
private static String[] decine = {"","X","XX","XXX","XL","L"};

public static String convert(int number){

//Implementazione controllo > 0 && < 21 altrimenti return errore
if (number > 0 && number < 21){
//Implementazione controllo > 0 && < 51 altrimenti return errore
if (number > 0 && number < 51){
char[] char_numero = String.valueOf(number).toCharArray();

String outString = "";

// In base al numero di cifre del numero intero, si crea la stringa di return
// Per il numero da restituire, si preleva il rispettivo valore dall'array di stringhe
// e lo si aggiunge alla stringa di ritorno per comporla con le rispettive lettere romane
// Es. Se la cifra delle unità è 4 --> prendo il 5° elemento (pos 4) dell'array unita ("IV") e
// lo aggiungo in coda alla stringa di ritorno

if (char_numero.length == 1) {
// 1 sola cifra --> numero con solo unità
outString += unita[Integer.parseInt(String.valueOf(char_numero[0]))];
} else {

if(Integer.parseInt(String.valueOf(char_numero[0])) == 1){
outString += "X";
} else {
outString += "XX";
}
} else {
outString += decine[Integer.parseInt(String.valueOf(char_numero[0]))];
outString += unita[Integer.parseInt(String.valueOf(char_numero[1]))];
}

// Terminata la composizione, ritorno la stringa finale con il numero convertito.
return outString;
}
// Se il programma arriva qua --> non ho fatto conversioni, quindi il valore non rispetta i limiti
// Se il programma arriva qua --> non ho fatto conversioni, quindi il valore non rispetta i limiti
return "Errore: Numero non rispetta le PRE-Condizioni del Programma";
}
}
13 changes: 12 additions & 1 deletion src/main/java/it/unipd/mtss/RomanPrinter.java
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,16 @@ private static String printAsciiArt(String romanNumber){
" \\ V / ",
" > < ",
" / . \\ ",
" /_/ \\_\\"};
" /_/ \\_\\"};

//Lettera L
String[] letter_L = {" _ ",
" | | ",
" | | ",
" | | ",
" | |____ ",
" |______|"};


for (int i = 0; i < 6; i++){
for (int j = 0; j < romanNumber.length(); j++){
Expand All @@ -47,6 +56,8 @@ private static String printAsciiArt(String romanNumber){
outString += letter_V[i] + " ";
} else if ( romanNumber_char[j]=='X') {
outString += letter_X[i] + " ";
} else if ( romanNumber_char[j]=='L') {
outString += letter_L[i] + " ";
}
}
outString += "\n";
Expand Down
17 changes: 16 additions & 1 deletion src/test/java/it/unipd/mtss/IntegerToRomanTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -60,12 +60,27 @@ public void testPrimi20() {
assertEquals("XX", IntegerToRoman.convert(20));
}

@Test
public void testPrimi50() {

//Test primi 50 numeri

assertEquals("XXIV", IntegerToRoman.convert(24));
assertEquals("XXVII", IntegerToRoman.convert(27));
assertEquals("XXXII", IntegerToRoman.convert(32));
assertEquals("XXXIX", IntegerToRoman.convert(39));
assertEquals("XL", IntegerToRoman.convert(40));
assertEquals("XLIV", IntegerToRoman.convert(44));
assertEquals("XLIX", IntegerToRoman.convert(49));
assertEquals("L", IntegerToRoman.convert(50));
}

@Test
public void testLimiti() {

//Test numeri fuori range di conversione

assertEquals("Errore: Numero non rispetta le PRE-Condizioni del Programma", IntegerToRoman.convert(-1));
assertEquals("Errore: Numero non rispetta le PRE-Condizioni del Programma", IntegerToRoman.convert(21));
assertEquals("Errore: Numero non rispetta le PRE-Condizioni del Programma", IntegerToRoman.convert(56));
}
}
73 changes: 73 additions & 0 deletions src/test/java/it/unipd/mtss/RomanPrinterTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -164,4 +164,77 @@ public void testPrimi20() {
assertEquals(v_19, RomanPrinter.print(19));
assertEquals(v_20, RomanPrinter.print(20));
}

@Test
public void testPrimi50() {

//Test primi 50 numeri
//24 - 27 - 32 - 39 - 40 - 44 - 49 - 50

String v_24 = " __ __ __ __ _____ __ __ \n" +
" \\ \\ / / \\ \\ / / |_ _| \\ \\ / / \n" +
" \\ V / \\ V / | | \\ \\ / / \n" +
" > < > < | | \\ \\/ / \n" +
" / . \\ / . \\ _| |_ \\ / \n" +
" /_/ \\_\\ /_/ \\_\\ |_____| \\/ \n";

String v_27 = " __ __ __ __ __ __ _____ _____ \n" +
" \\ \\ / / \\ \\ / / \\ \\ / / |_ _| |_ _| \n" +
" \\ V / \\ V / \\ \\ / / | | | | \n" +
" > < > < \\ \\/ / | | | | \n" +
" / . \\ / . \\ \\ / _| |_ _| |_ \n" +
" /_/ \\_\\ /_/ \\_\\ \\/ |_____| |_____| \n";

String v_32 = " __ __ __ __ __ __ _____ _____ \n" +
" \\ \\ / / \\ \\ / / \\ \\ / / |_ _| |_ _| \n" +
" \\ V / \\ V / \\ V / | | | | \n" +
" > < > < > < | | | | \n" +
" / . \\ / . \\ / . \\ _| |_ _| |_ \n" +
" /_/ \\_\\ /_/ \\_\\ /_/ \\_\\ |_____| |_____| \n";

String v_39 = " __ __ __ __ __ __ _____ __ __ \n" +
" \\ \\ / / \\ \\ / / \\ \\ / / |_ _| \\ \\ / / \n" +
" \\ V / \\ V / \\ V / | | \\ V / \n" +
" > < > < > < | | > < \n" +
" / . \\ / . \\ / . \\ _| |_ / . \\ \n" +
" /_/ \\_\\ /_/ \\_\\ /_/ \\_\\ |_____| /_/ \\_\\ \n";

String v_40 = " __ __ _ \n" +
" \\ \\ / / | | \n" +
" \\ V / | | \n" +
" > < | | \n" +
" / . \\ | |____ \n" +
" /_/ \\_\\ |______| \n";

String v_44 = " __ __ _ _____ __ __ \n" +
" \\ \\ / / | | |_ _| \\ \\ / / \n" +
" \\ V / | | | | \\ \\ / / \n" +
" > < | | | | \\ \\/ / \n" +
" / . \\ | |____ _| |_ \\ / \n" +
" /_/ \\_\\ |______| |_____| \\/ \n";

String v_49 = " __ __ _ _____ __ __ \n" +
" \\ \\ / / | | |_ _| \\ \\ / / \n" +
" \\ V / | | | | \\ V / \n" +
" > < | | | | > < \n" +
" / . \\ | |____ _| |_ / . \\ \n" +
" /_/ \\_\\ |______| |_____| /_/ \\_\\ \n";

String v_50 = " _ \n" +
" | | \n" +
" | | \n" +
" | | \n" +
" | |____ \n" +
" |______| \n";


assertEquals(v_24, RomanPrinter.print(24));
assertEquals(v_27, RomanPrinter.print(27));
assertEquals(v_32, RomanPrinter.print(32));
assertEquals(v_39, RomanPrinter.print(39));
assertEquals(v_40, RomanPrinter.print(40));
assertEquals(v_44, RomanPrinter.print(44));
assertEquals(v_49, RomanPrinter.print(49));
assertEquals(v_50, RomanPrinter.print(50));
}
}

0 comments on commit 51b0dca

Please sign in to comment.