feat(exercises): add JSR-354 workshop exercises (part1–part3)

Introduce hands-on exercises with tests covering:

* part1: MoneyExercises, ArithmeticExercises, RoundingExercises,
  FormattingExercises, ParsingExercises, IntegrationExercises
* part2: CurrencyConversionExercises, MonetaryOperatorExercises,
  MonetaryQueryExercises, MonetaryContextExercises,
  RoundingStrategyExercises
* part3: OrderExercises (end-to-end order workflow)

Use incomplete production methods with TODOs and complete JUnit 5 tests
(AssertJ only). Tests focus on observable behavior and avoid fragile
assertions (e.g., no fixed FX rates). Ensure clear progression from
basics to advanced concepts and final integration task.
This commit is contained in:
Marcus Fihlon 2026-04-19 21:07:46 +02:00
parent e83a9a5b93
commit 21d835b9ca
Signed by: McPringle
GPG key ID: C6B7F469EE363E1F
31 changed files with 1943 additions and 0 deletions

52
pom.xml Normal file
View file

@ -0,0 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>swiss.fihlon.workshop.money</groupId>
<artifactId>money-currency-api-workshop</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>25</maven.compiler.source>
<maven.compiler.target>25</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>javax.money</groupId>
<artifactId>money-api</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.javamoney.moneta</groupId>
<artifactId>moneta-core</artifactId>
<version>1.4.5</version>
</dependency>
<dependency>
<groupId>org.javamoney.moneta</groupId>
<artifactId>moneta-convert-ecb</artifactId>
<version>1.4.5</version>
</dependency>
<dependency>
<groupId>org.javamoney.moneta</groupId>
<artifactId>moneta-convert-imf</artifactId>
<version>1.4.5</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.14.3</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.assertj</groupId>
<artifactId>assertj-core</artifactId>
<version>3.27.7</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>