summaryrefslogtreecommitdiff
path: root/examples/03-inductive-data-types
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-07-14 19:01:50 +0100
committerMichael Williamson <mike@zwobble.org>2026-07-14 19:01:50 +0100
commit92bbc3595c39e964160660a2de9aa76b72ce727f (patch)
tree00979e144541fd594145e52fc92874b244cd2352 /examples/03-inductive-data-types
parent6194d284f5559acc5f23a402f577bac655878f92 (diff)
Convert Rust examples to use cargo test
Diffstat (limited to 'examples/03-inductive-data-types')
-rw-r--r--examples/03-inductive-data-types/output/java/src/main/java/org/zwobble/example/Arithmetic.java17
-rw-r--r--examples/03-inductive-data-types/output/java/src/test/java/org/zwobble/example/ArithmeticTests.java12
-rw-r--r--examples/03-inductive-data-types/output/rust/src/lib.rs33
-rw-r--r--examples/03-inductive-data-types/output/rust/src/main.rs13
4 files changed, 51 insertions, 24 deletions
diff --git a/examples/03-inductive-data-types/output/java/src/main/java/org/zwobble/example/Arithmetic.java b/examples/03-inductive-data-types/output/java/src/main/java/org/zwobble/example/Arithmetic.java
new file mode 100644
index 0000000..08cb75c
--- /dev/null
+++ b/examples/03-inductive-data-types/output/java/src/main/java/org/zwobble/example/Arithmetic.java
@@ -0,0 +1,17 @@
+package org.zwobble.example;
+
+import org.zwobble.example.types.arithmetic.Add;
+import org.zwobble.example.types.arithmetic.Const;
+import org.zwobble.example.types.arithmetic.Expression;
+
+public class Arithmetic {
+ public static int eval(Expression expression) {
+ return switch (expression) {
+ case Add(var left, var right) ->
+ eval(left) + eval(right);
+
+ case Const(var value) ->
+ value;
+ };
+ }
+}
diff --git a/examples/03-inductive-data-types/output/java/src/test/java/org/zwobble/example/ArithmeticTests.java b/examples/03-inductive-data-types/output/java/src/test/java/org/zwobble/example/ArithmeticTests.java
index 5623af5..cd4fdd0 100644
--- a/examples/03-inductive-data-types/output/java/src/test/java/org/zwobble/example/ArithmeticTests.java
+++ b/examples/03-inductive-data-types/output/java/src/test/java/org/zwobble/example/ArithmeticTests.java
@@ -17,18 +17,8 @@ public class ArithmeticTests {
new Const(52)
);
- int result = eval(expression);
+ int result = Arithmetic.eval(expression);
assertEquals(result, 141);
}
-
- private int eval(Expression expression) {
- return switch (expression) {
- case Add(var left, var right) ->
- eval(left) + eval(right);
-
- case Const(var value) ->
- value;
- };
- }
}
diff --git a/examples/03-inductive-data-types/output/rust/src/lib.rs b/examples/03-inductive-data-types/output/rust/src/lib.rs
new file mode 100644
index 0000000..3265e69
--- /dev/null
+++ b/examples/03-inductive-data-types/output/rust/src/lib.rs
@@ -0,0 +1,33 @@
+mod arithmetic;
+
+use arithmetic::{Const, Expression};
+
+fn eval(expression: &Expression) -> i32 {
+ match expression {
+ Expression::Add(add) =>
+ eval(&add.left) + eval(&add.right),
+
+ Expression::Const(Const { value }) =>
+ *value,
+ }
+}
+
+#[cfg(test)]
+mod test {
+ use super::arithmetic::{Add, Const, Expression};
+
+ #[test]
+ fn eval() {
+ let expression: Expression = Add {
+ left: Add {
+ left: Const { value: 42 }.into(),
+ right: Const { value: 47 }.into(),
+ }.into(),
+ right: Const { value: 52 }.into(),
+ }.into();
+
+ let result = super::eval(&expression);
+
+ assert_eq!(result, 141);
+ }
+}
diff --git a/examples/03-inductive-data-types/output/rust/src/main.rs b/examples/03-inductive-data-types/output/rust/src/main.rs
deleted file mode 100644
index 61fd820..0000000
--- a/examples/03-inductive-data-types/output/rust/src/main.rs
+++ /dev/null
@@ -1,13 +0,0 @@
-mod arithmetic;
-
-use arithmetic::{Add, Const, Expression};
-
-fn main() {
- let expression: Expression = Add {
- left: Add {
- left: Const { value: 42 }.into(),
- right: Const { value: 47 }.into(),
- }.into(),
- right: Const { value: 52 }.into(),
- }.into();
-}