From f21b3da304fe6083b24f75049e2704b95e541e18 Mon Sep 17 00:00:00 2001
From: Aaron Councilman <aaronjc4@illinois.edu>
Date: Thu, 13 Feb 2025 13:26:18 -0600
Subject: [PATCH] New product test that fails

---
 Cargo.lock                                                 | 2 +-
 Cargo.toml                                                 | 2 +-
 juno_samples/{product_read => products}/Cargo.toml         | 4 ++--
 juno_samples/{product_read => products}/build.rs           | 4 ++--
 juno_samples/{product_read => products}/src/gpu.sch        | 0
 juno_samples/{product_read => products}/src/main.rs        | 7 ++++++-
 .../src/product_read.jn => products/src/products.jn}       | 5 +++++
 7 files changed, 17 insertions(+), 7 deletions(-)
 rename juno_samples/{product_read => products}/Cargo.toml (88%)
 rename juno_samples/{product_read => products}/build.rs (81%)
 rename juno_samples/{product_read => products}/src/gpu.sch (100%)
 rename juno_samples/{product_read => products}/src/main.rs (63%)
 rename juno_samples/{product_read/src/product_read.jn => products/src/products.jn} (72%)

diff --git a/Cargo.lock b/Cargo.lock
index ffb61f4d..f6ffbed9 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1210,7 +1210,7 @@ dependencies = [
 ]
 
 [[package]]
-name = "juno_product_read"
+name = "juno_products"
 version = "0.1.0"
 dependencies = [
  "async-std",
diff --git a/Cargo.toml b/Cargo.toml
index 3e86bad0..0ed8f64b 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -33,5 +33,5 @@ members = [
 	"juno_samples/edge_detection",
 	"juno_samples/fork_join_tests",
 	"juno_samples/multi_device",
-	"juno_samples/product_read",
+	"juno_samples/products",
 ]
diff --git a/juno_samples/product_read/Cargo.toml b/juno_samples/products/Cargo.toml
similarity index 88%
rename from juno_samples/product_read/Cargo.toml
rename to juno_samples/products/Cargo.toml
index d466f555..34878a07 100644
--- a/juno_samples/product_read/Cargo.toml
+++ b/juno_samples/products/Cargo.toml
@@ -1,11 +1,11 @@
 [package]
-name = "juno_product_read"
+name = "juno_products"
 version = "0.1.0"
 authors = ["Aaron Councilman <aaronjc4@illinois.edu>"]
 edition = "2021"
 
 [[bin]]
-name = "juno_product_read"
+name = "juno_products"
 path = "src/main.rs"
 
 [features]
diff --git a/juno_samples/product_read/build.rs b/juno_samples/products/build.rs
similarity index 81%
rename from juno_samples/product_read/build.rs
rename to juno_samples/products/build.rs
index 2bd5172e..6d621961 100644
--- a/juno_samples/product_read/build.rs
+++ b/juno_samples/products/build.rs
@@ -4,7 +4,7 @@ fn main() {
     #[cfg(not(feature = "cuda"))]
     {
         JunoCompiler::new()
-            .file_in_src("product_read.jn")
+            .file_in_src("products.jn")
             .unwrap()
             .build()
             .unwrap();
@@ -12,7 +12,7 @@ fn main() {
     #[cfg(feature = "cuda")]
     {
         JunoCompiler::new()
-            .file_in_src("product_read.jn")
+            .file_in_src("products.jn")
             .unwrap()
             .schedule_in_src("gpu.sch")
             .unwrap()
diff --git a/juno_samples/product_read/src/gpu.sch b/juno_samples/products/src/gpu.sch
similarity index 100%
rename from juno_samples/product_read/src/gpu.sch
rename to juno_samples/products/src/gpu.sch
diff --git a/juno_samples/product_read/src/main.rs b/juno_samples/products/src/main.rs
similarity index 63%
rename from juno_samples/product_read/src/main.rs
rename to juno_samples/products/src/main.rs
index 5211098c..b8abb59d 100644
--- a/juno_samples/product_read/src/main.rs
+++ b/juno_samples/products/src/main.rs
@@ -2,7 +2,7 @@
 
 use hercules_rt::{runner, HerculesImmBox, HerculesImmBoxTo, HerculesMutBox};
 
-juno_build::juno!("product_read");
+juno_build::juno!("products");
 
 fn main() {
     async_std::task::block_on(async {
@@ -11,6 +11,11 @@ fn main() {
         let mut r = runner!(product_read);
         let res : Vec<i32> = HerculesMutBox::from(r.run(input.to()).await).as_slice().to_vec();
         assert_eq!(res, vec![0, 1, 2, 3]);
+
+        // Technically this returns a product of two i32s, but we can interpret that as an array
+        let mut r = runner!(product_return);
+        let res : Vec<i32> = HerculesMutBox::from(r.run(42, 17).await).as_slice().to_vec();
+        assert_eq!(res, vec![42, 17]);
     });
 }
 
diff --git a/juno_samples/product_read/src/product_read.jn b/juno_samples/products/src/products.jn
similarity index 72%
rename from juno_samples/product_read/src/product_read.jn
rename to juno_samples/products/src/products.jn
index 7bf74a10..4f56368e 100644
--- a/juno_samples/product_read/src/product_read.jn
+++ b/juno_samples/products/src/products.jn
@@ -7,3 +7,8 @@ fn product_read(input: (i32, i32)[2]) -> i32[4] {
   result[3] = input[1].1;
   return result;
 }
+
+#[entry]
+fn product_return(x: i32, y: i32) -> (i32, i32) {
+  return (x, y);
+}
-- 
GitLab