Skip to content

Commit 20a9f59

Browse files
committed
feat: add SubscriptionPrice and SubscriptionRange concepts
PriceRange constructor parallel change
1 parent 8b0c21b commit 20a9f59

File tree

4 files changed

+50
-5
lines changed

4 files changed

+50
-5
lines changed

exercises/tiered_pricing/solutions/adrianliz/java/src/main/java/tv/codely/checkout/PriceRange.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,12 @@ public PriceRange(int numberOfSubscriptionsFrom, int numberOfSubscriptionsTo,
1313
this.unitPrice = unitPrice;
1414
}
1515

16+
public PriceRange(final SubscriptionRange range,
17+
final SubscriptionPrice price) {
18+
this(range.numberOfSubscriptionsFrom(), range.numberOfSubscriptionsTo(),
19+
price.price());
20+
}
21+
1622
public boolean isInRange(int numberOfSubscriptions) {
1723
return numberOfSubscriptions >= numberOfSubscriptionsFrom
1824
&& numberOfSubscriptions <= numberOfSubscriptionsTo;
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package tv.codely.checkout;
2+
3+
public final class SubscriptionPrice {
4+
5+
private final double price;
6+
7+
public SubscriptionPrice(double price) {
8+
this.price = price;
9+
}
10+
11+
public double price() {
12+
return price;
13+
}
14+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package tv.codely.checkout;
2+
3+
public final class SubscriptionRange {
4+
5+
private final int numberOfSubscriptionsFrom;
6+
private final int numberOfSubscriptionsTo;
7+
8+
public SubscriptionRange(int numberOfSubscriptionsFrom, int numberOfSubscriptionsTo) {
9+
this.numberOfSubscriptionsFrom = numberOfSubscriptionsFrom;
10+
this.numberOfSubscriptionsTo = numberOfSubscriptionsTo;
11+
}
12+
13+
public boolean isSuitableFor(int numberOfSubscriptions) {
14+
return numberOfSubscriptions >= numberOfSubscriptionsFrom
15+
&& numberOfSubscriptions <= numberOfSubscriptionsTo;
16+
}
17+
18+
public int numberOfSubscriptionsFrom() {
19+
return numberOfSubscriptionsFrom;
20+
}
21+
22+
public int numberOfSubscriptionsTo() {
23+
return numberOfSubscriptionsTo;
24+
}
25+
}

exercises/tiered_pricing/solutions/adrianliz/java/src/test/java/tv/codely/checkout/TieredPricingShould.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ void unit_test_example() {
1717
void return_total_price_based_on_number_of_subscriptions() {
1818
final var priceRanges =
1919
List.of(
20-
new PriceRange(1, 2, 299),
21-
new PriceRange(3, 10, 239),
22-
new PriceRange(11, 25, 219),
23-
new PriceRange(26, 50, 199),
24-
new PriceRange(51, 100, 149));
20+
new PriceRange(new SubscriptionRange(1, 2), new SubscriptionPrice(299)),
21+
new PriceRange(new SubscriptionRange(3, 10), new SubscriptionPrice(239)),
22+
new PriceRange(new SubscriptionRange(11, 25), new SubscriptionPrice(219)),
23+
new PriceRange(new SubscriptionRange(26, 50), new SubscriptionPrice(199)),
24+
new PriceRange(new SubscriptionRange(51, 100), new SubscriptionPrice(149)));
2525
final var tieredPricing = new TieredPricing(priceRanges);
2626
final var expectedPrice = priceRanges.get(1).unitPrice() * 3;
2727

0 commit comments

Comments
 (0)