From a219477f64aa8b6763b5ad8e843c791e0cda93fb Mon Sep 17 00:00:00 2001 From: Jeremy Date: Tue, 7 Apr 2026 13:44:39 +0000 Subject: [PATCH 1/3] Added 2 new test files --- resources/project/Project.xml | 14 ++++++++++++ tests/SimulationModelTest.m | 43 +++++++++++++++++++++++++++++++++++ tests/tSimulatedModel.m | 15 ++++++++++++ 3 files changed, 72 insertions(+) create mode 100644 tests/SimulationModelTest.m create mode 100644 tests/tSimulatedModel.m diff --git a/resources/project/Project.xml b/resources/project/Project.xml index 99e8a0b..51f93b1 100644 --- a/resources/project/Project.xml +++ b/resources/project/Project.xml @@ -145,6 +145,20 @@ + + + + + + + + + + + + diff --git a/tests/SimulationModelTest.m b/tests/SimulationModelTest.m new file mode 100644 index 0000000..dd7157c --- /dev/null +++ b/tests/SimulationModelTest.m @@ -0,0 +1,43 @@ +% This test file was generated by Copilot. Validate generated output before use. +classdef SimulationModelTest < matlab.unittest.TestCase + properties + model + end + + methods(TestMethodSetup) + function createModel(testCase) + testCase.model = SimulationModel(); + end + end + + methods(Test) + function testInitialValues(testCase) + testCase.verifyEqual(testCase.model.Kel0, testCase.model.SimFun.Parameters.Value(1)); + testCase.verifyEqual(testCase.model.Kon0, testCase.model.SimFun.Parameters.Value(2)); + testCase.verifyEqual(testCase.model.Kdeg0, testCase.model.SimFun.Parameters.Value(3)); + testCase.verifyEqual(testCase.model.Duration0, 119); + testCase.verifyEqual(testCase.model.Interval0, testCase.model.DoseTable.Interval); + testCase.verifyEqual(testCase.model.Amount0, testCase.model.DoseTable.Amount); + end + + function testSimulateWithDefaultParameters(testCase) + testCase.model.simulate(); + testCase.verifyNotEmpty(testCase.model.SimData); + testCase.verifyNotEmpty(testCase.model.SimDataTable); + + end + + function testROIsBetweenThresholds(testCase) + testCase.model.simulate(); + value = testCase.model.ROIsBetweenThresholds; + testCase.verifyClass(value,'logical'); + end + + function testSimulateWithCustomParameters(testCase) + customParams = [0.1, 0.2, 0.3, 120, 50, 24]; + testCase.model.simulate(customParams); + testCase.verifyEqual(testCase.model.DoseTable.Amount, customParams(5)); + testCase.verifyEqual(testCase.model.DoseTable.Interval, customParams(6)); + end + end +end \ No newline at end of file diff --git a/tests/tSimulatedModel.m b/tests/tSimulatedModel.m new file mode 100644 index 0000000..38158b3 --- /dev/null +++ b/tests/tSimulatedModel.m @@ -0,0 +1,15 @@ +% This is an autogenerated sample test for file all +classdef tSimulatedModel < matlab.unittest.TestCase + methods (Test) + function testSimData(testCase) + % Specify the input(s) of all + sObj = SimulationModel; + simulate(sObj); + + testCase.verifyClass(sObj.SimData, 'SimData') + + import matlab.unittest.constraints.IsSameSetAs + testCase.verifyThat(sObj.SimData.DataNames,IsSameSetAs(["Drug","Receptor","Complex","RO"])); + end + end +end \ No newline at end of file From a44d27137295ef3e52c0bde9af27ab92ca777ac7 Mon Sep 17 00:00:00 2001 From: Jeremy Date: Tue, 7 Apr 2026 14:40:48 +0000 Subject: [PATCH 2/3] added tests --- tests/tgenerateSimFun.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/tgenerateSimFun.m b/tests/tgenerateSimFun.m index a26ed37..e0b52e1 100644 --- a/tests/tgenerateSimFun.m +++ b/tests/tgenerateSimFun.m @@ -6,7 +6,7 @@ end properties (ClassSetupParameter) - MATfilename = {"test_generateSimFun.mat"} + MATfilename = {"test_generateSimFun.mat", string.empty} end properties (TestParameter) @@ -56,7 +56,7 @@ function classSetup(testCase, MATfilename) testCase.MATfilefullpath = generateSimFun(MATfilename); % delete file with testCase.addTeardown - testCase.addTeardown(@delete,testCase.MATfilefullpath); + % testCase.addTeardown(@delete,testCase.MATfilefullpath); end testCase.LoadedData = load(testCase.MATfilefullpath); From 111387d9c0f8ae8b942683fc957e3e05ab074530 Mon Sep 17 00:00:00 2001 From: Jeremy Date: Tue, 7 Apr 2026 14:49:21 +0000 Subject: [PATCH 3/3] updated guide --- WorkshopGuide.md | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/WorkshopGuide.md b/WorkshopGuide.md index 8b03a62..f1ecc64 100644 --- a/WorkshopGuide.md +++ b/WorkshopGuide.md @@ -19,19 +19,19 @@ In this workshop, you will: ## Table of Contents  [Workshop Requirements](#H_34C2FB57) - [Part 1: Getting the workshop files and configuring GitHub for automated testing and results publishing](#TMP_8b09) + [Part 1: Getting the workshop files and configuring GitHub for automated testing and results publishing](#TMP_7e96) - [Part 2: Generating your first tests](#TMP_53b9) + [Part 2: Generating your first tests](#TMP_214f) - [Part 3: Finding existing tests and measuring coverage](#TMP_180a) + [Part 3: Finding existing tests and measuring coverage](#TMP_7a17) - [Part 4: Updating badges, committing our changes, and pushing to GitHub](#TMP_8434) + [Part 4: Updating badges, committing our changes, and pushing to GitHub](#TMP_0e45) - [Part 5: Create a pull request, watch GitHub Actions automatically test your changes and publish results](#TMP_4881) + [Part 5: Create a pull request, watch GitHub Actions automatically test your changes and publish results](#TMP_6e80) - [Part 6: Compile the App in the CI workflow and download the artifact](#TMP_83ca) + [Part 6: Compile the App in the CI workflow and download the artifact](#TMP_401b) - [Workshop wrap\-up and additional information](#TMP_6e44) + [Workshop wrap\-up and additional information](#TMP_9d70) @@ -56,7 +56,7 @@ The following steps cover all of the things you will need to successfully comple - The workshop leverages the free repository and CI capabilities offered by GitHub and GitHub Actions - Go to: [**https://github.com/signup**](https://github.com/signup) - + # Part 1: Getting the workshop files and configuring GitHub for automated testing and results publishing @@ -337,7 +337,7 @@ Click on the 'Run App' shortcut to start the app in MATLAB: ![image_25.png](WorkshopGuide_media/image_25.png) - + # Part 2: Generating your first tests @@ -558,7 +558,7 @@ Congratulations! You just created multiple tests for your MATLAB code! It was easier than you thought, right? - + # Part 3: Finding existing tests and measuring coverage @@ -897,7 +897,7 @@ It looks like we've achieved full statement coverage for [`generateSimFun`](./co ![image_70.png](WorkshopGuide_media/image_70.png) - + # Part 4: Updating badges, committing our changes, and pushing to GitHub @@ -1117,7 +1117,7 @@ At this point, all of your changes will be pushed to GitHub. ![image_90.png](WorkshopGuide_media/image_90.png) - + # Part 5: Create a pull request, watch GitHub Actions automatically test your changes and publish results @@ -1278,7 +1278,7 @@ The code coverage report looks like this: Now anyone that visits your repository can immediately see the quality of your code, explore your test and code coverage results, and will have more confidence in the code you are writing! - + # Part 6: Compile the App in the CI workflow and download the artifact @@ -1379,7 +1379,7 @@ Once the `Deploy/ Release (main)` job is done, a new artifact is available at th You can now download the CTF file and upload it to your Web App Server! - + # Workshop wrap\-up and additional information