From 1f17a20767c15e1d37f5bf7aeae0516c8c4e2d12 Mon Sep 17 00:00:00 2001
From: Aleksander Einarsen <aleksace@stud.ntnu.no>
Date: Thu, 17 Oct 2024 08:13:00 +0200
Subject: [PATCH] #86 Changed cargo check to cargo build, and added cargo test
 and test files for running code with tests

---
 .../rust_compiler_v2/rust_compiler.go         |  4 ++-
 .../rust_compiler_v2/rust_compiler_test.go    | 10 ++++++
 .../should_compile_and_run_tests              | 36 +++++++++++++++++++
 .../should_compile_with_faulty_test           | 32 +++++++++++++++++
 4 files changed, 81 insertions(+), 1 deletion(-)
 create mode 100644 modules/compiler_v2/rust_compiler_v2/should_compile_and_run_tests
 create mode 100644 modules/compiler_v2/rust_compiler_v2/should_compile_with_faulty_test

diff --git a/modules/compiler_v2/rust_compiler_v2/rust_compiler.go b/modules/compiler_v2/rust_compiler_v2/rust_compiler.go
index 9078256..6dd5f45 100644
--- a/modules/compiler_v2/rust_compiler_v2/rust_compiler.go
+++ b/modules/compiler_v2/rust_compiler_v2/rust_compiler.go
@@ -44,7 +44,9 @@ func (gb *RustCompiler) CheckCompileErrors(srcCode []byte, dependencies ...strin
 	}
 
 	// Run go build
-	cmdString += " cargo check"
+	cmdString += " cargo build"
+
+	cmdString += " && cargo test"
 
 	//cmdSlice := strings.Fields(cmdString)
 	cmd := utils.MakeCommand(cmdString)
diff --git a/modules/compiler_v2/rust_compiler_v2/rust_compiler_test.go b/modules/compiler_v2/rust_compiler_v2/rust_compiler_test.go
index 4e3d3e0..169049b 100644
--- a/modules/compiler_v2/rust_compiler_v2/rust_compiler_test.go
+++ b/modules/compiler_v2/rust_compiler_v2/rust_compiler_test.go
@@ -27,6 +27,16 @@ func TestCompileStringToRust(t *testing.T) {
 			shouldCompile: true,
 			dependencies:  []string{"rand", "colored"},
 		},
+		{
+			filename:      "should_compile_and_run_tests",
+			shouldCompile: true,
+			dependencies:  nil,
+		},
+		{
+			filename:      "should_compile_with_faulty_test",
+			shouldCompile: false,
+			dependencies:  nil,
+		},
 	}
 
 	for _, test := range tests {
diff --git a/modules/compiler_v2/rust_compiler_v2/should_compile_and_run_tests b/modules/compiler_v2/rust_compiler_v2/should_compile_and_run_tests
new file mode 100644
index 0000000..1a75cfa
--- /dev/null
+++ b/modules/compiler_v2/rust_compiler_v2/should_compile_and_run_tests
@@ -0,0 +1,36 @@
+fn divide(a: f64, b: f64) -> Result<f64, String> {
+    if b == 0.0 {
+        return Err(String::from("Cannot divide by zero"));
+    }
+    Ok(a / b)
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+
+    #[test]
+    fn test_divide_positive_numbers() {
+        let result = divide(10.0, 2.0);
+        assert_eq!(result.unwrap(), 5.0);
+    }
+
+    #[test]
+    fn test_divide_negative_numbers() {
+        let result = divide(-10.0, 2.0);
+        assert_eq!(result.unwrap(), -5.0);
+    }
+
+    #[test]
+    fn test_divide_by_zero() {
+        let result = divide(10.0, 0.0);
+        assert!(result.is_err());
+    }
+}
+
+fn main() {
+    match divide(10.0, 2.0) {
+        Ok(result) => println!("10.0 divided by 2.0 is {}", result),
+        Err(e) => println!("Error: {}", e),
+    }
+}
diff --git a/modules/compiler_v2/rust_compiler_v2/should_compile_with_faulty_test b/modules/compiler_v2/rust_compiler_v2/should_compile_with_faulty_test
new file mode 100644
index 0000000..d22217d
--- /dev/null
+++ b/modules/compiler_v2/rust_compiler_v2/should_compile_with_faulty_test
@@ -0,0 +1,32 @@
+// Function to add two numbers
+fn add(a: i32, b: i32) -> i32 {
+    a + b
+}
+
+#[cfg(test)]
+mod tests {
+    use super::*;
+
+    #[test]
+    fn test_add_positive_numbers() {
+        let result = add(2, 3);
+        assert_eq!(result, 5);
+    }
+
+    #[test]
+    fn test_add_negative_numbers() {
+        let result = add(-2, -3);
+        assert_eq!(result, -5);
+    }
+
+    #[test]
+    fn test_add_faulty() {
+        // This test is intentionally faulty
+        let result = add(2, 2);
+        assert_eq!(result, 5); // This will fail because 2 + 2 is actually 4
+    }
+}
+
+fn main() {
+    println!("2 + 3 = {}", add(2, 3));
+}
-- 
GitLab