Skip to content
This repository has been archived by the owner on Feb 6, 2025. It is now read-only.

Commit

Permalink
Conversione dei numeri fino a 1000
Browse files Browse the repository at this point in the history
  • Loading branch information
EjoGrejo committed May 16, 2024
1 parent d011bf4 commit 4f48e4c
Show file tree
Hide file tree
Showing 25 changed files with 238 additions and 144 deletions.
6 changes: 4 additions & 2 deletions src/main/java/it/unipd/mtss/IntegerToRoman.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ public class IntegerToRoman {
// Map che associa i numeri arabi ai corrispondenti numeri romani
private static final TreeMap<Integer, String> ROMAN_NUMERALS_MAP = new TreeMap<>();
static {
ROMAN_NUMERALS_MAP.put(1000, "M");
ROMAN_NUMERALS_MAP.put(900, "CM");
ROMAN_NUMERALS_MAP.put(500, "D");
ROMAN_NUMERALS_MAP.put(400, "CD");
ROMAN_NUMERALS_MAP.put(100, "C");
Expand All @@ -25,8 +27,8 @@ public class IntegerToRoman {

public static String convert(int number){

if (number < 1 || number > 500) {
throw new IllegalArgumentException("Il numero deve essere compreso tra 1 e 500.");
if (number < 1 || number > 1000) {
throw new IllegalArgumentException("Il numero deve essere compreso tra 1 e 1000.");
}

StringBuilder romanNumber = new StringBuilder();
Expand Down
14 changes: 12 additions & 2 deletions src/main/java/it/unipd/mtss/RomanPrinter.java
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ public static String printAsciiArt(String romanNumber){
result.append("* * * * \n");
result.append(" \n");
break;

case 'C':
result.append("* * * *\n");
result.append("* \n");
Expand All @@ -69,11 +69,21 @@ public static String printAsciiArt(String romanNumber){
result.append("* * * \n");
result.append(" \n");
break;

case 'M':
result.append("* *\n");
result.append("* * * *\n");
result.append("* * * *\n");
result.append("* * *\n");
result.append("* *\n");
result.append(" \n");
break;

default:
throw new IllegalArgumentException("Invalid Roman numeral: " + c);
}
}
return result.toString();
}
}
}

21 changes: 19 additions & 2 deletions src/test/java/it/unipd/mtss/IntegerToRomanTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -75,12 +75,29 @@ public void First500NumbersConversion() {
assertEquals(IntegerToRoman.convert(489), "CDLXXXIX");
}

//numeri con una sola lettera fino a 10
//numeri con una sola lettera fino a 500
@Test
public void OneLetterNumbers() {
assertEquals(IntegerToRoman.convert(10), "X");
assertEquals(IntegerToRoman.convert(50), "L");
assertEquals(IntegerToRoman.convert(100), "C");
assertEquals(IntegerToRoman.convert(500), "D");
assertEquals(IntegerToRoman.convert(1000), "M");
}
}

@Test
public void MediumNumberConversion() {
assertEquals(IntegerToRoman.convert(40), "XL");
assertEquals(IntegerToRoman.convert(90), "XC");
assertEquals(IntegerToRoman.convert(400), "CD");
assertEquals(IntegerToRoman.convert(900), "CM");
}

//numero romano più lungo nell'intervallo 1-1000
@Test
public void LongestRomanNumberTill1000() {
assertEquals(IntegerToRoman.convert(888), "DCCCLXXXVIII");
}

}

70 changes: 69 additions & 1 deletion src/test/java/it/unipd/mtss/RomanPrinterTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -93,4 +93,72 @@ public void TestD() {
String stringa= result.toString();
assertEquals(RomanPrinter.printAsciiArt("D"), stringa);
}
}

@Test
public void TestM() {
StringBuilder result = new StringBuilder();
result.append("* *\n");
result.append("* * * *\n");
result.append("* * * *\n");
result.append("* * *\n");
result.append("* *\n");
result.append(" \n");
String stringa= result.toString();
assertEquals(RomanPrinter.printAsciiArt("M"), stringa);
}

@Test
public void TestMultiChars() {
StringBuilder result = new StringBuilder();
result.append("* *\n");
result.append("* * * *\n");
result.append("* * * *\n");
result.append("* * *\n");
result.append("* *\n");
result.append(" \n");
result.append("* * * \n");
result.append("* * \n");
result.append("* *\n");
result.append("* * \n");
result.append("* * * \n");
result.append(" \n");
result.append("* * * *\n");
result.append("* \n");
result.append("* \n");
result.append("* \n");
result.append("* * * *\n");
result.append(" \n");
result.append("* \n");
result.append("* \n");
result.append("* \n");
result.append("* \n");
result.append("* * * * \n");
result.append(" \n");
result.append("* * \n");
result.append(" * * \n");
result.append(" * \n");
result.append(" * * \n");
result.append("* *\n");
result.append(" \n");
result.append("* *\n");
result.append(" * * \n");
result.append(" * * \n");
result.append(" * * \n");
result.append(" * \n");
result.append(" \n");
result.append("***\n");
result.append(" * \n");
result.append(" * \n");
result.append(" * \n");
result.append("***\n");
result.append("\n");

String stringa= result.toString();
assertEquals(RomanPrinter.printAsciiArt("MDCLXVI"), stringa);
}

@Test(timeout = 100)
public void performance() {
RomanPrinter.printAsciiArt("MDCLXVI");
}
}
Binary file modified target/classes/it/unipd/mtss/IntegerToRoman.class
Binary file not shown.
Binary file modified target/classes/it/unipd/mtss/RomanPrinter.class
Binary file not shown.
Binary file modified target/jacoco.exec
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
/Users/serpentaki/assignment2/src/main/java/it/unipd/mtss/IntegerToRoman.java
/Users/serpentaki/assignment2/src/main/java/it/unipd/mtss/RomanPrinter.java
/home/elio/Assignment2/src/main/java/it/unipd/mtss/IntegerToRoman.java
/home/elio/Assignment2/src/main/java/it/unipd/mtss/RomanPrinter.java
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
/Users/serpentaki/assignment2/src/test/java/it/unipd/mtss/RomanPrinterTest.java
/Users/serpentaki/assignment2/src/test/java/it/unipd/mtss/IntegerToRomanTest.java
/home/elio/Assignment2/src/test/java/it/unipd/mtss/IntegerToRomanTest.java
/home/elio/Assignment2/src/test/java/it/unipd/mtss/RomanPrinterTest.java
2 changes: 1 addition & 1 deletion target/site/jacoco/index.html
Original file line number Diff line number Diff line change
@@ -1 +1 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="it"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="jacoco-resources/report.gif" type="image/gif"/><title>roman-number</title><script type="text/javascript" src="jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb', 'coveragetable'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="jacoco-sessions.html" class="el_session">Sessions</a></span><span class="el_report">roman-number</span></div><h1>roman-number</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td><td class="sortable ctr1" id="l" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="m" onclick="toggleSort(this)">Classes</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">10 of 306</td><td class="ctr2">96%</td><td class="bar">0 of 15</td><td class="ctr2">100%</td><td class="ctr1">3</td><td class="ctr2">16</td><td class="ctr1">3</td><td class="ctr2">73</td><td class="ctr1">3</td><td class="ctr2">6</td><td class="ctr1">0</td><td class="ctr2">2</td></tr></tfoot><tbody><tr><td id="a0"><a href="it.unipd.mtss/index.html" class="el_package">it.unipd.mtss</a></td><td class="bar" id="b0"><img src="jacoco-resources/redbar.gif" width="3" height="10" title="10" alt="10"/><img src="jacoco-resources/greenbar.gif" width="116" height="10" title="296" alt="296"/></td><td class="ctr2" id="c0">96%</td><td class="bar" id="d0"><img src="jacoco-resources/greenbar.gif" width="120" height="10" title="15" alt="15"/></td><td class="ctr2" id="e0">100%</td><td class="ctr1" id="f0">3</td><td class="ctr2" id="g0">16</td><td class="ctr1" id="h0">3</td><td class="ctr2" id="i0">73</td><td class="ctr1" id="j0">3</td><td class="ctr2" id="k0">6</td><td class="ctr1" id="l0">0</td><td class="ctr2" id="m0">2</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.8.202204050719</span></div></body></html>
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="jacoco-resources/report.gif" type="image/gif"/><title>roman-number</title><script type="text/javascript" src="jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb', 'coveragetable'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="jacoco-sessions.html" class="el_session">Sessions</a></span><span class="el_report">roman-number</span></div><h1>roman-number</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td><td class="sortable ctr1" id="l" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="m" onclick="toggleSort(this)">Classes</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">10 of 343</td><td class="ctr2">97%</td><td class="bar">0 of 16</td><td class="ctr2">100%</td><td class="ctr1">3</td><td class="ctr2">17</td><td class="ctr1">3</td><td class="ctr2">82</td><td class="ctr1">3</td><td class="ctr2">6</td><td class="ctr1">0</td><td class="ctr2">2</td></tr></tfoot><tbody><tr><td id="a0"><a href="it.unipd.mtss/index.html" class="el_package">it.unipd.mtss</a></td><td class="bar" id="b0"><img src="jacoco-resources/redbar.gif" width="3" height="10" title="10" alt="10"/><img src="jacoco-resources/greenbar.gif" width="116" height="10" title="333" alt="333"/></td><td class="ctr2" id="c0">97%</td><td class="bar" id="d0"><img src="jacoco-resources/greenbar.gif" width="120" height="10" title="16" alt="16"/></td><td class="ctr2" id="e0">100%</td><td class="ctr1" id="f0">3</td><td class="ctr2" id="g0">17</td><td class="ctr1" id="h0">3</td><td class="ctr2" id="i0">82</td><td class="ctr1" id="j0">3</td><td class="ctr2" id="k0">6</td><td class="ctr1" id="l0">0</td><td class="ctr2" id="m0">2</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.8.202204050719</span></div></body></html>
2 changes: 1 addition & 1 deletion target/site/jacoco/it.unipd.mtss/IntegerToRoman.html
Original file line number Diff line number Diff line change
@@ -1 +1 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="it"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>IntegerToRoman</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">roman-number</a> &gt; <a href="index.html" class="el_package">it.unipd.mtss</a> &gt; <span class="el_class">IntegerToRoman</span></div><h1>IntegerToRoman</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">3 of 114</td><td class="ctr2">97%</td><td class="bar">0 of 6</td><td class="ctr2">100%</td><td class="ctr1">1</td><td class="ctr2">6</td><td class="ctr1">1</td><td class="ctr2">22</td><td class="ctr1">1</td><td class="ctr2">3</td></tr></tfoot><tbody><tr><td id="a1"><a href="IntegerToRoman.java.html#L8" class="el_method">IntegerToRoman()</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="5" height="10" title="3" alt="3"/></td><td class="ctr2" id="c2">0%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f0">1</td><td class="ctr2" id="g1">1</td><td class="ctr1" id="h0">1</td><td class="ctr2" id="i2">1</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a2"><a href="IntegerToRoman.java.html#L11" class="el_method">static {...}</a></td><td class="bar" id="b1"><img src="../jacoco-resources/greenbar.gif" width="120" height="10" title="71" alt="71"/></td><td class="ctr2" id="c0">100%</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f1">0</td><td class="ctr2" id="g2">1</td><td class="ctr1" id="h1">0</td><td class="ctr2" id="i0">13</td><td class="ctr1" id="j1">0</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a0"><a href="IntegerToRoman.java.html#L28" class="el_method">convert(int)</a></td><td class="bar" id="b2"><img src="../jacoco-resources/greenbar.gif" width="67" height="10" title="40" alt="40"/></td><td class="ctr2" id="c1">100%</td><td class="bar" id="d0"><img src="../jacoco-resources/greenbar.gif" width="120" height="10" title="6" alt="6"/></td><td class="ctr2" id="e0">100%</td><td class="ctr1" id="f2">0</td><td class="ctr2" id="g0">4</td><td class="ctr1" id="h2">0</td><td class="ctr2" id="i1">8</td><td class="ctr1" id="j2">0</td><td class="ctr2" id="k2">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.8.202204050719</span></div></body></html>
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>IntegerToRoman</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">roman-number</a> &gt; <a href="index.html" class="el_package">it.unipd.mtss</a> &gt; <span class="el_class">IntegerToRoman</span></div><h1>IntegerToRoman</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">3 of 126</td><td class="ctr2">97%</td><td class="bar">0 of 6</td><td class="ctr2">100%</td><td class="ctr1">1</td><td class="ctr2">6</td><td class="ctr1">1</td><td class="ctr2">24</td><td class="ctr1">1</td><td class="ctr2">3</td></tr></tfoot><tbody><tr><td id="a1"><a href="IntegerToRoman.java.html#L8" class="el_method">IntegerToRoman()</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="4" height="10" title="3" alt="3"/></td><td class="ctr2" id="c2">0%</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f0">1</td><td class="ctr2" id="g1">1</td><td class="ctr1" id="h0">1</td><td class="ctr2" id="i2">1</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a2"><a href="IntegerToRoman.java.html#L11" class="el_method">static {...}</a></td><td class="bar" id="b1"><img src="../jacoco-resources/greenbar.gif" width="120" height="10" title="83" alt="83"/></td><td class="ctr2" id="c0">100%</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f1">0</td><td class="ctr2" id="g2">1</td><td class="ctr1" id="h1">0</td><td class="ctr2" id="i0">15</td><td class="ctr1" id="j1">0</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a0"><a href="IntegerToRoman.java.html#L30" class="el_method">convert(int)</a></td><td class="bar" id="b2"><img src="../jacoco-resources/greenbar.gif" width="57" height="10" title="40" alt="40"/></td><td class="ctr2" id="c1">100%</td><td class="bar" id="d0"><img src="../jacoco-resources/greenbar.gif" width="120" height="10" title="6" alt="6"/></td><td class="ctr2" id="e0">100%</td><td class="ctr1" id="f2">0</td><td class="ctr2" id="g0">4</td><td class="ctr1" id="h2">0</td><td class="ctr2" id="i1">8</td><td class="ctr1" id="j2">0</td><td class="ctr2" id="k2">1</td></tr></tbody></table><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.8.202204050719</span></div></body></html>
Loading

0 comments on commit 4f48e4c

Please sign in to comment.