Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
J
java_weekendowa_20221008
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Patryk Czarnik
java_weekendowa_20221008
Commits
30b7cf0d
Commit
30b7cf0d
authored
Dec 11, 2022
by
Patryk Czarnik
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
przykłady testów AssertJ
parent
4f270606
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
250 additions
and
0 deletions
+250
-0
pom.xml
PC40-Testy/pom.xml
+6
-0
Tabela.java
PC40-Testy/src/main/java/waluty/model/Tabela.java
+54
-0
Waluta.java
PC40-Testy/src/main/java/waluty/model/Waluta.java
+47
-0
TabelaTest.java
PC40-Testy/src/test/java/waluty/model/TabelaTest.java
+59
-0
WalutaTest.java
PC40-Testy/src/test/java/waluty/model/WalutaTest.java
+84
-0
No files found.
PC40-Testy/pom.xml
View file @
30b7cf0d
...
...
@@ -17,5 +17,11 @@
<version>
5.9.1
</version>
<scope>
test
</scope>
</dependency>
<dependency>
<groupId>
org.assertj
</groupId>
<artifactId>
assertj-core
</artifactId>
<version>
3.22.0
</version>
<scope>
test
</scope>
</dependency>
</dependencies>
</project>
PC40-Testy/src/main/java/waluty/model/Tabela.java
0 → 100644
View file @
30b7cf0d
package
waluty
.
model
;
import
java.time.LocalDate
;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
Tabela
{
private
final
String
numer
;
private
final
LocalDate
data
;
private
final
List
<
Waluta
>
waluty
=
new
ArrayList
<>();
public
Tabela
(
String
numer
,
LocalDate
data
)
{
this
.
numer
=
numer
;
this
.
data
=
data
;
}
public
String
getNumer
()
{
return
numer
;
}
public
LocalDate
getData
()
{
return
data
;
}
public
List
<
Waluta
>
getWaluty
()
{
return
waluty
;
}
@Override
public
String
toString
()
{
return
"Tabela nr "
+
numer
+
" z dnia "
+
data
+
", "
+
waluty
.
size
()
+
" walut"
;
}
public
void
dodajWalute
(
Waluta
waluta
)
{
this
.
waluty
.
add
(
waluta
);
}
public
Waluta
wyszukaj
(
String
kod
)
{
for
(
Waluta
waluta
:
waluty
)
{
if
(
waluta
.
getKod
().
equals
(
kod
))
{
return
waluta
;
}
}
return
null
;
}
public
String
[]
getKodyWalut
()
{
return
this
.
waluty
.
stream
()
.
map
(
Waluta:
:
getKod
)
.
sorted
()
.
toArray
(
String
[]::
new
);
}
}
PC40-Testy/src/main/java/waluty/model/Waluta.java
0 → 100644
View file @
30b7cf0d
package
waluty
.
model
;
import
java.math.BigDecimal
;
import
java.math.RoundingMode
;
// Ta klasa jest "niemutowalna" (immutable), tzn. raz utworzony obiekt tej klasy nie może zmienić stanu.
// O takich klasach mówi się też "value object". Przykłady znanych klas: String, Integer, BigDecimal, LocalDate
public
class
Waluta
{
private
final
String
kod
;
private
final
String
nazwa
;
private
final
BigDecimal
kurs
;
public
Waluta
(
String
kod
,
String
nazwa
,
BigDecimal
kurs
)
{
this
.
kod
=
kod
;
this
.
nazwa
=
nazwa
;
this
.
kurs
=
kurs
;
}
public
String
getKod
()
{
return
kod
;
}
public
String
getNazwa
()
{
return
nazwa
;
}
public
BigDecimal
getKurs
()
{
return
kurs
;
}
@Override
public
String
toString
()
{
return
kod
+
" ("
+
nazwa
+
"): "
+
kurs
;
}
public
BigDecimal
przeliczNaZlote
(
BigDecimal
kwotaWWalucie
)
{
// po pomnożeniu zaokrąglamy do 2 miejsc po przecinku
return
kwotaWWalucie
.
multiply
(
kurs
).
setScale
(
2
,
RoundingMode
.
HALF_UP
);
}
public
BigDecimal
przeliczNaWalute
(
BigDecimal
kwotaWZlotych
)
{
// zaokrąglanie robi się od razu podczas dzielenia
return
kwotaWZlotych
.
divide
(
kurs
,
2
,
RoundingMode
.
HALF_UP
);
}
}
PC40-Testy/src/test/java/waluty/model/TabelaTest.java
0 → 100644
View file @
30b7cf0d
package
waluty
.
model
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.*;
import
java.math.BigDecimal
;
import
java.time.LocalDate
;
import
org.junit.jupiter.api.BeforeEach
;
import
org.junit.jupiter.api.Test
;
class
TabelaTest
{
private
static
final
String
PRZYKLADOWY_NUMER
=
"123/A/NBP/2022"
;
private
static
final
LocalDate
PRZYKLADOWA_DATA
=
LocalDate
.
of
(
2022
,
9
,
30
);
private
Tabela
tabela
;
@BeforeEach
void
setUp
()
{
tabela
=
new
Tabela
(
PRZYKLADOWY_NUMER
,
PRZYKLADOWA_DATA
);
}
@Test
void
testTabela
()
{
assertThat
(
tabela
.
getNumer
()).
isEqualTo
(
PRZYKLADOWY_NUMER
);
assertThat
(
tabela
.
getData
()).
isEqualTo
(
PRZYKLADOWA_DATA
);
assertThat
(
tabela
.
getWaluty
()).
isEmpty
();
}
@Test
void
testToString
()
{
assertThat
(
tabela
).
asString
().
isEqualTo
(
"Tabela nr 123/A/NBP/2022 z dnia 2022-09-30, 0 walut"
);
}
@Test
void
testDodajWalute
()
{
Waluta
dolar
=
new
Waluta
(
"USD"
,
"dolar"
,
new
BigDecimal
(
"5.0000"
));
Waluta
euro
=
new
Waluta
(
"EUR"
,
"euro"
,
new
BigDecimal
(
"3.0000"
));
tabela
.
dodajWalute
(
dolar
);
tabela
.
dodajWalute
(
euro
);
assertThat
(
tabela
.
getWaluty
())
.
hasSize
(
2
)
.
containsExactlyInAnyOrder
(
dolar
,
euro
);
}
@Test
void
testWyszukaj
()
{
Waluta
dolar
=
new
Waluta
(
"USD"
,
"dolar"
,
new
BigDecimal
(
"5.0000"
));
Waluta
euro
=
new
Waluta
(
"EUR"
,
"euro"
,
new
BigDecimal
(
"3.0000"
));
tabela
.
dodajWalute
(
dolar
);
tabela
.
dodajWalute
(
euro
);
Waluta
znaleziona
=
tabela
.
wyszukaj
(
"EUR"
);
assertThat
(
znaleziona
).
isEqualTo
(
euro
);
}
}
PC40-Testy/src/test/java/waluty/model/WalutaTest.java
0 → 100644
View file @
30b7cf0d
package
waluty
.
model
;
// import static org.junit.jupiter.api.Assertions.*;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.*;
import
java.math.BigDecimal
;
import
org.junit.jupiter.api.BeforeEach
;
import
org.junit.jupiter.api.Test
;
class
WalutaTest
{
private
Waluta
dolar
;
private
Waluta
euro
;
private
Waluta
peso
;
@BeforeEach
void
setUp
()
{
dolar
=
new
Waluta
(
"USD"
,
"dolar"
,
new
BigDecimal
(
"5.0000"
));
euro
=
new
Waluta
(
"EUR"
,
"euro"
,
new
BigDecimal
(
"3.0000"
));
peso
=
new
Waluta
(
"MXN"
,
"peso"
,
new
BigDecimal
(
"0.3333"
));
}
@Test
void
testWaluta
()
{
// asercje w stylu JUnit:
// assertEquals("USD", dolar.getKod());
// asersje w stylu AssertJ:
assertThat
(
dolar
.
getKod
()).
isEqualTo
(
"USD"
);
// tylko prezentacja ciekawych asercji (akurat tutaj dla String)
assertThat
(
dolar
.
getKod
())
.
isNotNull
()
.
hasSize
(
3
)
.
isUpperCase
()
.
startsWith
(
"U"
)
.
endsWith
(
"D"
);
}
@Test
void
testToString
()
{
// assertEquals("USD (dolar): 5.0000", dolar.toString());
assertThat
(
dolar
.
toString
()).
isEqualTo
(
"USD (dolar): 5.0000"
);
assertThat
(
euro
.
toString
()).
isEqualTo
(
"EUR (euro): 3.0000"
);
}
@Test
void
testPrzeliczNaZlote
()
{
BigDecimal
sto
=
new
BigDecimal
(
"100.00"
);
BigDecimal
wynik
=
dolar
.
przeliczNaZlote
(
sto
);
assertThat
(
wynik
).
isEqualTo
(
"500.00"
);
}
@Test
void
testPrzeliczNaZloteZaokr
()
{
BigDecimal
dwa
=
new
BigDecimal
(
"2.00"
);
BigDecimal
wynik
=
peso
.
przeliczNaZlote
(
dwa
);
assertThat
(
wynik
).
isEqualTo
(
"0.67"
);
}
@Test
void
testPrzeliczNaWalute
()
{
BigDecimal
piescset
=
new
BigDecimal
(
"500.00"
);
BigDecimal
wynik
=
dolar
.
przeliczNaWalute
(
piescset
);
assertThat
(
wynik
).
isEqualTo
(
"100.00"
);
}
@Test
void
testPrzeliczNaWaluteZaokr
()
{
BigDecimal
tysiac
=
new
BigDecimal
(
"2000.00"
);
BigDecimal
wynik
=
euro
.
przeliczNaWalute
(
tysiac
);
assertThat
(
wynik
).
isEqualTo
(
"666.67"
);
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment