Skip to content

Commit 17a5b57

Browse files
committed
update
1 parent 2c02338 commit 17a5b57

File tree

9 files changed

+221
-0
lines changed

9 files changed

+221
-0
lines changed

Documentazione.pdf

6.36 MB
Binary file not shown.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<projectDescription>
3+
<name>CtwedgeProjectTVSW</name>
4+
<comment></comment>
5+
<projects>
6+
</projects>
7+
<buildSpec>
8+
</buildSpec>
9+
<natures>
10+
</natures>
11+
</projectDescription>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
Model combinatorialTesting
2+
3+
Parameters:
4+
5+
reason : {VUOTA, TEXT, LONG_TEXT}
6+
accepted : Boolean
7+
nomeUtente: [0..12]
8+
mailSuffisso : {COM, IT, ERROR}
9+
mailDominio : [0..12]
10+
mailChiocciola : Boolean
11+
reasonValid: Boolean
12+
emailValid: Boolean
13+
noError: Boolean
14+
15+
Constraints:
16+
# noError => (reasonValid and emailValid )#
17+
# accepted = true #
18+
# not(reasonValid) <=> reason=VUOTA #
19+
# emailValid => ( (nomeUtente>0 and nomeUtente<10) and
20+
(mailChiocciola==true) and
21+
(mailSuffisso=IT or mailSuffisso=COM) and
22+
(mailDominio>0 and mailDominio<10) ) #
23+
24+
25+
26+
27+
28+

ProgettoTVSW/DesignByContract/CalculateShipping/.idea/CalculateShipping.iml

+11
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ProgettoTVSW/DesignByContract/CalculateShipping/.idea/inspectionProfiles/profiles_settings.xml

+6
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ProgettoTVSW/DesignByContract/CalculateShipping/.idea/misc.xml

+7
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ProgettoTVSW/DesignByContract/CalculateShipping/.idea/modules.xml

+8
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

ProgettoTVSW/DesignByContract/CalculateShipping/.idea/workspace.xml

+82
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
from math import sqrt
2+
import icontract
3+
4+
5+
@icontract.require(lambda y_ShippingPosition: y_ShippingPosition > 0,
6+
" deve essere positiva la coordinata y di spedizione")
7+
@icontract.require(lambda x_ShippingPosition: x_ShippingPosition > 0,
8+
" deve essere positiva la coordinata x di spedizione")
9+
@icontract.require(lambda x_shop: 0 < x_shop < 50,
10+
" indirizzo coordinata x del negozio ")
11+
@icontract.require(lambda y_shop: 0 < y_shop < 50,
12+
" deve essere positiva la coordinata x di spedizione")
13+
@icontract.ensure(lambda result: 0 < result <= 10,
14+
"il costo dev'essere >0 e al massimo=10 ")
15+
def CalculateShipping(x_ShippingPosition: int, y_ShippingPosition: int,
16+
x_shop: int, y_shop: int):
17+
# posizione del magazzino
18+
x_magazzino = 5
19+
y_magazzino = 23
20+
21+
# calcolo della distance
22+
distance1 = sqrt(
23+
pow((x_shop - x_magazzino), 2) + pow((y_shop - y_magazzino), 2))
24+
distance2 = sqrt(pow((x_magazzino - x_ShippingPosition), 2) + pow(
25+
(y_magazzino - y_ShippingPosition), 2))
26+
distance = distance1 + distance2
27+
28+
# calcola la distanza totale tra magazzino e l'indirizzo di spedizione
29+
costo_al_metro = 0.2
30+
full_cost = costo_al_metro * distance
31+
32+
assert full_cost > 0
33+
if full_cost > 10:
34+
full_cost = 10
35+
elif full_cost < 1:
36+
full_cost = 0
37+
38+
return full_cost
39+
40+
41+
@icontract.invariant(lambda self: len(str(self.codice)) == 5)
42+
@icontract.invariant(lambda self: self.codice > 0)
43+
class Prodotto:
44+
def __init__(self, nome, codice, prezzo):
45+
self.nome = nome
46+
self.codice = codice
47+
self.prezzo = prezzo
48+
49+
def recap(self):
50+
return f"Prodotto\n Nome:{self.nome}\n Codice:{self.codice}\n Prezzo:{self.prezzo}"
51+
52+
53+
def main():
54+
costo1 = CalculateShipping(2, 10, 25, 37)
55+
print("Il costo della spedizione è: " + str(costo1))
56+
57+
# Viola pre-condizione perchè y shop è >50
58+
# costo2 = CalculateShipping(2, 10, 25, 51)
59+
60+
prodotto1 = Prodotto("shampoo", 12345, 10)
61+
print(prodotto1.recap())
62+
63+
# Viola l'invariante perchè fatto da 6 cifre
64+
# prodotto2 = Prodotto("shampo", 123456, 25)
65+
66+
if __name__ == "__main__":
67+
main()
68+

0 commit comments

Comments
 (0)