summaryrefslogtreecommitdiff
path: root/examples/04-sum/output
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2026-08-10 10:19:49 +0100
committerMichael Williamson <mike@zwobble.org>2026-08-10 10:19:49 +0100
commit5113f2157c5aa257ad7ebf555cb6a551701d169a (patch)
tree8ddaee09f6c43b0529b2203f9e662a028fb5fcc0 /examples/04-sum/output
parent5d41166750e0f05da436bf30c7a642749f7a71c5 (diff)
Add generic struct example without any outputs
Diffstat (limited to 'examples/04-sum/output')
-rw-r--r--examples/04-sum/output/java/.gitignore2
l---------examples/04-sum/output/java/pom.xml1
-rw-r--r--examples/04-sum/output/java/src/main/java/org/zwobble/example/Shapes.java17
-rw-r--r--examples/04-sum/output/java/src/test/java/org/zwobble/example/ShapesTests.java23
-rw-r--r--examples/04-sum/output/rust/.gitignore1
-rw-r--r--examples/04-sum/output/rust/Cargo.lock7
-rw-r--r--examples/04-sum/output/rust/Cargo.toml6
-rw-r--r--examples/04-sum/output/rust/rust-toolchain.toml2
-rw-r--r--examples/04-sum/output/rust/src/lib.rs29
-rw-r--r--examples/04-sum/output/rust/src/shapes.rs32
10 files changed, 120 insertions, 0 deletions
diff --git a/examples/04-sum/output/java/.gitignore b/examples/04-sum/output/java/.gitignore
new file mode 100644
index 0000000..ff511d4
--- /dev/null
+++ b/examples/04-sum/output/java/.gitignore
@@ -0,0 +1,2 @@
+/src/gen/
+/target/
diff --git a/examples/04-sum/output/java/pom.xml b/examples/04-sum/output/java/pom.xml
new file mode 120000
index 0000000..445fa65
--- /dev/null
+++ b/examples/04-sum/output/java/pom.xml
@@ -0,0 +1 @@
+../../../templates/java-junit/pom.xml \ No newline at end of file
diff --git a/examples/04-sum/output/java/src/main/java/org/zwobble/example/Shapes.java b/examples/04-sum/output/java/src/main/java/org/zwobble/example/Shapes.java
new file mode 100644
index 0000000..a6a468f
--- /dev/null
+++ b/examples/04-sum/output/java/src/main/java/org/zwobble/example/Shapes.java
@@ -0,0 +1,17 @@
+package org.zwobble.example;
+
+import org.zwobble.example.types.shapes.Shape;
+import org.zwobble.example.types.shapes.Rectangle;
+import org.zwobble.example.types.shapes.Triangle;
+
+public class Shapes {
+ public static int area(Shape shape) {
+ return switch (shape) {
+ case Rectangle(var width, var height) ->
+ width * height;
+
+ case Triangle(var width, var height) ->
+ width * height / 2;
+ };
+ }
+}
diff --git a/examples/04-sum/output/java/src/test/java/org/zwobble/example/ShapesTests.java b/examples/04-sum/output/java/src/test/java/org/zwobble/example/ShapesTests.java
new file mode 100644
index 0000000..893a544
--- /dev/null
+++ b/examples/04-sum/output/java/src/test/java/org/zwobble/example/ShapesTests.java
@@ -0,0 +1,23 @@
+package org.zwobble.example;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import org.junit.jupiter.api.Test;
+import org.zwobble.example.types.shapes.Shape;
+import org.zwobble.example.types.shapes.Rectangle;
+import org.zwobble.example.types.shapes.Triangle;
+
+public class ShapesTests {
+ @Test
+ public void rectangle() {
+ Shape rectangle = new Rectangle(10, 25);
+ int area = Shapes.area(rectangle);
+ assertEquals(area, 250);
+ }
+
+ @Test
+ public void triangle() {
+ Shape triangle = new Triangle(10, 25);
+ int area = Shapes.area(triangle);
+ assertEquals(area, 125);
+ }
+}
diff --git a/examples/04-sum/output/rust/.gitignore b/examples/04-sum/output/rust/.gitignore
new file mode 100644
index 0000000..ea8c4bf
--- /dev/null
+++ b/examples/04-sum/output/rust/.gitignore
@@ -0,0 +1 @@
+/target
diff --git a/examples/04-sum/output/rust/Cargo.lock b/examples/04-sum/output/rust/Cargo.lock
new file mode 100644
index 0000000..9dc6e3e
--- /dev/null
+++ b/examples/04-sum/output/rust/Cargo.lock
@@ -0,0 +1,7 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 4
+
+[[package]]
+name = "example"
+version = "0.1.0"
diff --git a/examples/04-sum/output/rust/Cargo.toml b/examples/04-sum/output/rust/Cargo.toml
new file mode 100644
index 0000000..5d4c622
--- /dev/null
+++ b/examples/04-sum/output/rust/Cargo.toml
@@ -0,0 +1,6 @@
+[package]
+name = "example"
+version = "0.1.0"
+edition = "2024"
+
+[dependencies]
diff --git a/examples/04-sum/output/rust/rust-toolchain.toml b/examples/04-sum/output/rust/rust-toolchain.toml
new file mode 100644
index 0000000..4fedb95
--- /dev/null
+++ b/examples/04-sum/output/rust/rust-toolchain.toml
@@ -0,0 +1,2 @@
+[toolchain]
+channel = "1.96"
diff --git a/examples/04-sum/output/rust/src/lib.rs b/examples/04-sum/output/rust/src/lib.rs
new file mode 100644
index 0000000..f961002
--- /dev/null
+++ b/examples/04-sum/output/rust/src/lib.rs
@@ -0,0 +1,29 @@
+mod shapes;
+
+use shapes::{Rectangle, Shape, Triangle};
+
+fn area(shape: &Shape) -> i32 {
+ match shape {
+ Shape::Rectangle(rectangle) => rectangle.width * rectangle.height,
+ Shape::Triangle(triangle) => triangle.width * triangle.height / 2,
+ }
+}
+
+#[cfg(test)]
+mod test {
+ use super::shapes::{Rectangle, Shape, Triangle};
+
+ #[test]
+ fn rectangle() {
+ let rectangle = Shape::Rectangle(Rectangle { width: 10, height: 25 });
+ let area = super::area(&rectangle);
+ assert_eq!(area, 250);
+ }
+
+ #[test]
+ fn triangle() {
+ let triangle = Shape::Triangle(Triangle { width: 10, height: 25 });
+ let area = super::area(&triangle);
+ assert_eq!(area, 125);
+ }
+}
diff --git a/examples/04-sum/output/rust/src/shapes.rs b/examples/04-sum/output/rust/src/shapes.rs
new file mode 100644
index 0000000..2712e41
--- /dev/null
+++ b/examples/04-sum/output/rust/src/shapes.rs
@@ -0,0 +1,32 @@
+// Generated by hobgoblin.
+
+/// A 2D shape.
+#[derive(Clone, Debug, Hash, PartialEq)]
+pub enum Shape {
+ Rectangle(crate::shapes::Rectangle),
+ Triangle(crate::shapes::Triangle),
+}
+
+impl ::std::convert::From::<crate::shapes::Rectangle> for crate::shapes::Shape {
+ fn from(value: crate::shapes::Rectangle) -> Self {
+ Self::Rectangle(value)
+ }
+}
+
+impl ::std::convert::From::<crate::shapes::Triangle> for crate::shapes::Shape {
+ fn from(value: crate::shapes::Triangle) -> Self {
+ Self::Triangle(value)
+ }
+}
+
+#[derive(Clone, Debug, Hash, PartialEq)]
+pub struct Rectangle {
+ pub width: ::core::primitive::i32,
+ pub height: ::core::primitive::i32,
+}
+
+#[derive(Clone, Debug, Hash, PartialEq)]
+pub struct Triangle {
+ pub width: ::core::primitive::i32,
+ pub height: ::core::primitive::i32,
+}