Skip to content

Commit 5efab41

Browse files
authored
Merge pull request mouredev#2655 from Teren91/main
#13 - dart
2 parents 93a1356 + a481401 commit 5efab41

File tree

2 files changed

+105
-23
lines changed

2 files changed

+105
-23
lines changed

Roadmap/11 - MANEJO DE FICHEROS/dart/teren91.dart

Lines changed: 19 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,9 @@ void salesManagment() async {
6060
ProductList productList = new ProductList(file);
6161
await productList.createProductsFile(file);
6262

63-
UserUI ui = new UserUI(productList);
63+
SalesCalculator salesCalculator = new SalesCalculator();
64+
65+
UserUI ui = new UserUI(productList, salesCalculator);
6466

6567
try {
6668
do {
@@ -76,8 +78,9 @@ void salesManagment() async {
7678

7779
class UserUI {
7880
final ProductList productList;
81+
final SalesCalculator salesCalculator;
7982

80-
UserUI(this.productList);
83+
UserUI(this.productList, this.salesCalculator);
8184

8285
void showMenu() {
8386
print('''
@@ -195,9 +198,7 @@ class UserUI {
195198
{
196199
final products = await productList.getAllProducts();
197200

198-
SalesCalculator salesCalculator = new SalesCalculator(products);
199-
200-
print(salesCalculator.totalSales());
201+
print(salesCalculator.totalSales(products));
201202

202203
}
203204

@@ -206,12 +207,12 @@ class UserUI {
206207
print('Introduzca el nombre del producto');
207208
final productName = stdin.readLineSync()!;
208209

209-
final product = await productList.searchProduct(productName);
210-
final products = await productList.getAllProducts();
210+
final products = await productList.getAllProducts().then((products) => products);
211211

212-
SalesCalculator salesCalculator = new SalesCalculator(products);
212+
final sales = salesCalculator.productTotalSales(products, productName);
213+
213214

214-
print(salesCalculator.productTotalSales(product));
215+
print(sales);
215216

216217
}
217218

@@ -336,11 +337,8 @@ class ProductList {
336337
}
337338

338339
class SalesCalculator{
339-
final productList;
340-
341-
SalesCalculator(this.productList);
342-
343-
double totalSales()
340+
341+
double totalSales(List<Product> productList)
344342
{
345343
double total = 0;
346344

@@ -360,21 +358,19 @@ class SalesCalculator{
360358
return total;
361359
}
362360

363-
double productTotalSales(Product product)
361+
double productTotalSales(List<Product> productList, String productName)
364362
{
365-
double total = 0;
366363
try {
367364

368-
for(final e in productList)
369-
{
370-
if(e.productName == product.productName)
371-
total += product.price * product.saleAmount;
372-
}
373-
365+
final product = productList.firstWhere((element) => element.productName == productName);
366+
367+
return product.saleAmount * product.price;
374368
} catch (e) {
375369
print(e);
376370
}
377371

378-
return total;
372+
return 0;
373+
374+
379375
}
380376
}
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
/*
2+
* EJERCICIO:
3+
* Crea una función que se encargue de sumar dos números y retornar
4+
* su resultado.
5+
* Crea un test, utilizando las herramientas de tu lenguaje, que sea
6+
* capaz de determinar si esa función se ejecuta correctamente.
7+
*
8+
* DIFICULTAD EXTRA (opcional):
9+
* Crea un diccionario con las siguientes claves y valores:
10+
* "name": "Tu nombre"
11+
* "age": "Tu edad"
12+
* "birth_date": "Tu fecha de nacimiento"
13+
* "programming_languages": ["Listado de lenguajes de programación"]
14+
* Crea dos test:
15+
* - Un primero que determine que existen todos los campos.
16+
* - Un segundo que determine que los datos introducidos son correctos.
17+
*/
18+
19+
/*
20+
NOTA: Para que este código funcione es necesario crear un archivo pubspec.yaml
21+
y añadir la dependencia siguiente:
22+
23+
dev_dependencies:
24+
test: ^1.25.2
25+
26+
*/
27+
28+
import 'package:test/test.dart';
29+
30+
void main() {
31+
32+
33+
testData(data);
34+
testSum(2, 3);
35+
}
36+
37+
int sum(int i, int j) {
38+
return i + j;
39+
}
40+
41+
Map<String, dynamic> data = {
42+
"name": "Teren",
43+
"age": 32,
44+
"birth_date": DateTime(1991, 9, 14),
45+
"programming_lenguages": ["Dart", "C#", "TSQL", "C++"]
46+
};
47+
48+
void testSum(int x, int y)
49+
{
50+
test('Test function sum', () {
51+
52+
expect(sum(x, y), equals(x+y));
53+
});
54+
}
55+
56+
void testData(Map<String, dynamic> data) {
57+
group('Test del diccionario', () {
58+
test('Test de la primera clave: name', () {
59+
expect(data.containsKey("name"), true);
60+
});
61+
test('Test de la segunda clave: age', () {
62+
expect(data.containsKey("age"), true);
63+
});
64+
test('Test de la tercera clave: birth_date', () {
65+
expect(data.containsKey("birth_date"), true);
66+
});
67+
test('Test de la cuarte clave: programming_lenguages', () {
68+
expect(data.containsKey("programming_lenguages"), true);
69+
});
70+
});
71+
72+
group('Test del diccionario - tipo de datos', () {
73+
test('Test de la primera clave debe ser String: name', () {
74+
expect(data.values.first is String , true);
75+
});
76+
test('Test de la segunda clave: age', () {
77+
expect(data.values.elementAt(1) is int, true);
78+
});
79+
test('Test de la tercera clave: birth_date', () {
80+
expect(data.values.elementAt(2) is DateTime, true);
81+
});
82+
test('Test de la cuarte clave: programming_lenguages', () {
83+
expect(data.values.last is List, true);
84+
});
85+
});
86+
}

0 commit comments

Comments
 (0)