From a66843efd9d19c4bb6551a19eb1882e44e60f467 Mon Sep 17 00:00:00 2001 From: Mariana Date: Tue, 3 Jun 2025 23:28:00 +0100 Subject: [PATCH 01/14] add getActivitiesFromUser --- src/testgen/testgen/FacadeTemplates.hs | 33 +++++++++++++++++++++++--- src/testgen/testgen/TestClass.hs | 5 ++-- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/src/testgen/testgen/FacadeTemplates.hs b/src/testgen/testgen/FacadeTemplates.hs index 9fab41b..2ddbb6e 100644 --- a/src/testgen/testgen/FacadeTemplates.hs +++ b/src/testgen/testgen/FacadeTemplates.hs @@ -14,12 +14,14 @@ module FacadeTemplates ( equalityTemplate, - emailTemplate + emailTemplate, + getActivitiesFromUserTemplate ) where -import Java (assertEquals, runJava, toJavaExpression) +import Java (assertEquals, assertTrue, runJava, toJavaExpression, toJavaExpressionList, JavaData (toJavaExpression)) import TestTemplate (TestTemplate(..), genToTestTemplate) -import Test.QuickCheck (Gen, arbitrary, elements, generate, listOf) +import Test.QuickCheck (Gen, arbitrary, elements, generate, listOf, Arbitrary (arbitrary)) +import Generators equalityTestGenerator :: Gen [String] equalityTestGenerator = do @@ -55,3 +57,28 @@ emailTestGenerator = do emailTemplate :: TestTemplate emailTemplate = TestTemplate "validEmail" emailTestGenerator 1 + +-- getActivitiesFromUser +userEmail :: User -> String +userEmail (Amateur _ _ _ _ _ _ _ _ _ email _) = email +userEmail (Occasional _ _ _ _ _ _ _ _ _ email _ _) = email +userEmail (Professional _ _ _ _ _ _ _ _ _ email _ _) = email + +userActivities :: User -> [Activity] +userActivities (Amateur _ _ _ _ _ _ _ _ _ _ acts) = acts +userActivities (Occasional _ _ _ _ _ _ _ _ _ _ _ acts) = acts +userActivities (Professional _ _ _ _ _ _ _ _ _ _ _ acts) = acts + +getActivitiesFromUserTestGenerator :: Gen [String] +getActivitiesFromUserTestGenerator = do + user <- arbitrary :: Gen User + let email = userEmail user + let activitiesLen = length (userActivities user) + let emailNoSpaces = filter (/= ' ') email + let userVarName = "user" + let userLine = "User " ++ userVarName ++ " = " ++ toJavaExpression user + let testLine = assertEquals ("getActivitiesFromUser(\"" ++ emailNoSpaces ++ "\")") (toJavaExpression activitiesLen) + return ([userLine] ++ [";"] ++ [testLine]) + +getActivitiesFromUserTemplate :: TestTemplate +getActivitiesFromUserTemplate = genToTestTemplate "getActivitiesFromUser" getActivitiesFromUserTestGenerator 3 \ No newline at end of file diff --git a/src/testgen/testgen/TestClass.hs b/src/testgen/testgen/TestClass.hs index 76fe043..4c49768 100644 --- a/src/testgen/testgen/TestClass.hs +++ b/src/testgen/testgen/TestClass.hs @@ -15,7 +15,7 @@ module TestClass (generateTestClass) where import Data.List (intercalate) -import Java (indent) +import Java (indent, toJavaExpressionList) import TestTemplate (generateTestsFromTemplate) import System.Process (StdStream(CreatePipe), createProcess, proc, std_in, std_out, waitForProcess) @@ -26,7 +26,8 @@ import FacadeTemplates templates = [ - equalityTemplate -- TODO: remove this simple template only to show the desired architecture + equalityTemplate, + getActivitiesFromUserTemplate ] generateTests :: IO [String] From 17f53ed5b313ca7b88b133d29a83085e9f799897 Mon Sep 17 00:00:00 2001 From: Mariana Date: Tue, 3 Jun 2025 23:58:38 +0100 Subject: [PATCH 02/14] fix getActivitiesFromUser --- src/testgen/testgen/FacadeTemplates.hs | 47 ++++++++++++++++++++++++-- src/testgen/testgen/Generators.hs | 2 +- 2 files changed, 45 insertions(+), 4 deletions(-) diff --git a/src/testgen/testgen/FacadeTemplates.hs b/src/testgen/testgen/FacadeTemplates.hs index 2ddbb6e..9b7b4c6 100644 --- a/src/testgen/testgen/FacadeTemplates.hs +++ b/src/testgen/testgen/FacadeTemplates.hs @@ -22,6 +22,8 @@ import Java (assertEquals, assertTrue, runJava, toJavaExpression, toJavaExpressi import TestTemplate (TestTemplate(..), genToTestTemplate) import Test.QuickCheck (Gen, arbitrary, elements, generate, listOf, Arbitrary (arbitrary)) import Generators +import Data.List (intercalate) +import GHC.Generics (Associativity) equalityTestGenerator :: Gen [String] equalityTestGenerator = do @@ -69,16 +71,55 @@ userActivities (Amateur _ _ _ _ _ _ _ _ _ _ acts) = acts userActivities (Occasional _ _ _ _ _ _ _ _ _ _ _ acts) = acts userActivities (Professional _ _ _ _ _ _ _ _ _ _ _ acts) = acts +userCodeActivity :: String -> Activity -> Activity +userCodeActivity userCode (PushUp _ a b c d e f) = PushUp userCode a b c d e f +userCodeActivity userCode (Running _ a b c d e f) = Running userCode a b c d e f +userCodeActivity userCode (Trail _ a b c d e f g h) = Trail userCode a b c d e f g h +userCodeActivity userCode (WeightSquat _ a b c d e f g) = WeightSquat userCode a b c d e f g + getActivitiesFromUserTestGenerator :: Gen [String] getActivitiesFromUserTestGenerator = do user <- arbitrary :: Gen User let email = userEmail user let activitiesLen = length (userActivities user) + let activities = map (userCodeActivity "userCode") (userActivities user) let emailNoSpaces = filter (/= ' ') email let userVarName = "user" - let userLine = "User " ++ userVarName ++ " = " ++ toJavaExpression user + let setupLine = "MakeItFit model = new MakeItFit();" + let userLine = "model.create(" ++ toJavaExpression user ++ ")" + let userCodeLine = "UUID userCode = model.getUser(" ++ toJavaExpression email ++ ").getCode();" + let activitiesVar = "activities" + let activitiesDecl = "List " ++ activitiesVar ++ " = Arrays.asList(" ++ intercalate ", " (map toJavaExpression (activities)) ++ ");" + let forLine = "for (Activity a : " ++ activitiesVar ++ ") model.addActivityToUser(" ++ toJavaExpression emailNoSpaces ++ ", a);" let testLine = assertEquals ("getActivitiesFromUser(\"" ++ emailNoSpaces ++ "\")") (toJavaExpression activitiesLen) - return ([userLine] ++ [";"] ++ [testLine]) + return ([setupLine] ++ [userLine] ++ [";"] ++ [userCodeLine, activitiesDecl, forLine] ++ [testLine]) + getActivitiesFromUserTemplate :: TestTemplate -getActivitiesFromUserTemplate = genToTestTemplate "getActivitiesFromUser" getActivitiesFromUserTestGenerator 3 \ No newline at end of file +getActivitiesFromUserTemplate = genToTestTemplate "getActivitiesFromUser" getActivitiesFromUserTestGenerator 3 + +-- addActivityToUser +{-- addActivityToUserTestGenerator :: Gen [String] +addActivityToUserTestGenerator = do + user <- arbitrary :: Gen User + activity <- genActivity (userCode user) + let email = userEmail user + let activitiesLen = length (userActivities user) + let emailNoSpaces = filter (/= ' ') email + let userVarName = "user" + let activityVarName = "activity" + let setupLine = "MakeItFit model = new MakeItFit();" + let userLine = "model.create(" ++ toJavaExpression user ++ ")" + let activityLine = "Activity " ++ activityVarName ++ " = " ++ toJavaExpression activity ++ ";" + let beforeLine = assertEquals + ("getActivitiesFromUser(\"" ++ emailNoSpaces ++ "\").size()") + (toJavaExpression activitiesLen) + let addLine = "addActivityToUser(\"" ++ emailNoSpaces ++ "\", " ++ activityVarName ++ ");" + let afterLine = assertEquals + ("getActivitiesFromUser(\"" ++ emailNoSpaces ++ "\").size()") + (toJavaExpression (activitiesLen + 1)) + return [setupLine, userLine, activityLine, beforeLine, addLine, afterLine] + +addActivityToUserTemplate :: TestTemplate +addActivityToUserTemplate = genToTestTemplate "addActivityToUser" addActivityToUserTestGenerator 3 +--} \ No newline at end of file diff --git a/src/testgen/testgen/Generators.hs b/src/testgen/testgen/Generators.hs index f6154ac..35b0585 100644 --- a/src/testgen/testgen/Generators.hs +++ b/src/testgen/testgen/Generators.hs @@ -242,7 +242,7 @@ instance Arbitrary MakeItFitDate where instance JavaData MakeItFitDate where javaTypeName = const "MakeItFitDate" toJavaExpression (MakeItFitDate y m d) = - "new MakeItFitDate(" ++ intercalate ", " (map toJavaExpression [y, m, d]) ++ ")" + "MakeItFitDate.of(" ++ intercalate ", " (map toJavaExpression [y, m, d]) ++ ")" -- | MakeItFit TrailType data TrailType = TrailEasy | TrailMedium | TrailHard deriving (Show, Eq) From 5530693f5973e61b5b67afbef7df8a22c7cda5ae Mon Sep 17 00:00:00 2001 From: Mariana Date: Wed, 4 Jun 2025 00:08:57 +0100 Subject: [PATCH 03/14] add addActivityToUser --- src/testgen/testgen/FacadeTemplates.hs | 34 ++++++++++++-------------- src/testgen/testgen/TestClass.hs | 3 ++- 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/src/testgen/testgen/FacadeTemplates.hs b/src/testgen/testgen/FacadeTemplates.hs index 9b7b4c6..4fb174f 100644 --- a/src/testgen/testgen/FacadeTemplates.hs +++ b/src/testgen/testgen/FacadeTemplates.hs @@ -15,7 +15,8 @@ module FacadeTemplates ( equalityTemplate, emailTemplate, - getActivitiesFromUserTemplate + getActivitiesFromUserTemplate, + addActivityToUserTemplate ) where import Java (assertEquals, assertTrue, runJava, toJavaExpression, toJavaExpressionList, JavaData (toJavaExpression)) @@ -91,35 +92,32 @@ getActivitiesFromUserTestGenerator = do let activitiesVar = "activities" let activitiesDecl = "List " ++ activitiesVar ++ " = Arrays.asList(" ++ intercalate ", " (map toJavaExpression (activities)) ++ ");" let forLine = "for (Activity a : " ++ activitiesVar ++ ") model.addActivityToUser(" ++ toJavaExpression emailNoSpaces ++ ", a);" - let testLine = assertEquals ("getActivitiesFromUser(\"" ++ emailNoSpaces ++ "\")") (toJavaExpression activitiesLen) + let testLine = assertEquals ("getActivitiesFromUser(\"" ++ emailNoSpaces ++ "\").size()") (toJavaExpression activitiesLen) return ([setupLine] ++ [userLine] ++ [";"] ++ [userCodeLine, activitiesDecl, forLine] ++ [testLine]) - getActivitiesFromUserTemplate :: TestTemplate -getActivitiesFromUserTemplate = genToTestTemplate "getActivitiesFromUser" getActivitiesFromUserTestGenerator 3 +getActivitiesFromUserTemplate = genToTestTemplate "getActivitiesFromUserTest" getActivitiesFromUserTestGenerator 1 -- addActivityToUser -{-- addActivityToUserTestGenerator :: Gen [String] +addActivityToUserTestGenerator :: Gen [String] addActivityToUserTestGenerator = do user <- arbitrary :: Gen User - activity <- genActivity (userCode user) let email = userEmail user let activitiesLen = length (userActivities user) + let activities = map (userCodeActivity "userCode") (userActivities user) let emailNoSpaces = filter (/= ' ') email let userVarName = "user" - let activityVarName = "activity" let setupLine = "MakeItFit model = new MakeItFit();" let userLine = "model.create(" ++ toJavaExpression user ++ ")" - let activityLine = "Activity " ++ activityVarName ++ " = " ++ toJavaExpression activity ++ ";" - let beforeLine = assertEquals - ("getActivitiesFromUser(\"" ++ emailNoSpaces ++ "\").size()") - (toJavaExpression activitiesLen) - let addLine = "addActivityToUser(\"" ++ emailNoSpaces ++ "\", " ++ activityVarName ++ ");" - let afterLine = assertEquals - ("getActivitiesFromUser(\"" ++ emailNoSpaces ++ "\").size()") - (toJavaExpression (activitiesLen + 1)) - return [setupLine, userLine, activityLine, beforeLine, addLine, afterLine] + let userCodeLine = "UUID userCode = model.getUser(" ++ toJavaExpression email ++ ").getCode();" + let activitiesVar = "activities" + let activitiesDecl = "List " ++ activitiesVar ++ " = Arrays.asList(" ++ intercalate ", " (map toJavaExpression activities) ++ ");" + let forLine = "for (Activity a : " ++ activitiesVar ++ ") model.addActivityToUser(" ++ toJavaExpression emailNoSpaces ++ ", a);" + let testLineBefore = assertEquals ("getActivitiesFromUser(\"" ++ emailNoSpaces ++ "\").size()") (toJavaExpression activitiesLen) + activityToAdd <- genActivity "userCode" + let activityAdd = "model.addActivityToUser(" ++ toJavaExpression emailNoSpaces ++ ", " ++ toJavaExpression activityToAdd ++ ");" + let testLineAfter = assertEquals ("getActivitiesFromUser(\"" ++ emailNoSpaces ++ "\").size()") (toJavaExpression (activitiesLen + 1)) + return ([setupLine] ++ [userLine] ++ [";"] ++ [userCodeLine, activitiesDecl, forLine, testLineBefore, activityAdd, testLineAfter]) addActivityToUserTemplate :: TestTemplate -addActivityToUserTemplate = genToTestTemplate "addActivityToUser" addActivityToUserTestGenerator 3 ---} \ No newline at end of file +addActivityToUserTemplate = genToTestTemplate "addActivityToUserTest" addActivityToUserTestGenerator 1 diff --git a/src/testgen/testgen/TestClass.hs b/src/testgen/testgen/TestClass.hs index 4c49768..9e0d858 100644 --- a/src/testgen/testgen/TestClass.hs +++ b/src/testgen/testgen/TestClass.hs @@ -27,7 +27,8 @@ import FacadeTemplates templates = [ equalityTemplate, - getActivitiesFromUserTemplate + getActivitiesFromUserTemplate, + addActivityToUserTemplate ] generateTests :: IO [String] From 76f288647aab7644fdde401b179293de0ad21d1f Mon Sep 17 00:00:00 2001 From: Mariana Date: Wed, 4 Jun 2025 00:18:41 +0100 Subject: [PATCH 04/14] add removeActivityFromUser --- src/testgen/testgen/FacadeTemplates.hs | 37 +++++++++++++++++++++++++- src/testgen/testgen/TestClass.hs | 3 ++- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/src/testgen/testgen/FacadeTemplates.hs b/src/testgen/testgen/FacadeTemplates.hs index 4fb174f..71c0e73 100644 --- a/src/testgen/testgen/FacadeTemplates.hs +++ b/src/testgen/testgen/FacadeTemplates.hs @@ -16,7 +16,8 @@ module FacadeTemplates ( equalityTemplate, emailTemplate, getActivitiesFromUserTemplate, - addActivityToUserTemplate + addActivityToUserTemplate, + removeActivityFromUserTemplate ) where import Java (assertEquals, assertTrue, runJava, toJavaExpression, toJavaExpressionList, JavaData (toJavaExpression)) @@ -121,3 +122,37 @@ addActivityToUserTestGenerator = do addActivityToUserTemplate :: TestTemplate addActivityToUserTemplate = genToTestTemplate "addActivityToUserTest" addActivityToUserTestGenerator 1 + +-- removeActivityFromUser +removeActivityFromUserTestGenerator :: Gen [String] +removeActivityFromUserTestGenerator = do + user <- arbitrary :: Gen User + let email = userEmail user + let activitiesLen = length (userActivities user) + let activities = map (userCodeActivity "userCode") (userActivities user) + let emailNoSpaces = filter (/= ' ') email + let setupLine = "MakeItFit model = new MakeItFit();" + let userLine = "model.create(" ++ toJavaExpression user ++ ");" + let userCodeLine = "UUID userCode = model.getUser(" ++ toJavaExpression email ++ ").getCode();" + let activitiesVar = "activities" + let activitiesDecl = "List " ++ activitiesVar ++ " = Arrays.asList(" ++ intercalate ", " (map toJavaExpression activities) ++ ");" + let forAddLine = "for (Activity a : " ++ activitiesVar ++ ") model.addActivityToUser(" ++ toJavaExpression emailNoSpaces ++ ", a);" + let activityIdsVar = "activityIds" + let activityIdsDecl = "List " ++ activityIdsVar ++ " = new java.util.ArrayList<>();" + let forGetIdLine = "for (Activity a : " ++ activitiesVar ++ ") " ++ activityIdsVar ++ ".add(a.getCode());" + let forRemoveLine = "for (UUID activityId : " ++ activityIdsVar ++ ") model.removeActivityFromUser(" ++ toJavaExpression emailNoSpaces ++ ", activityId);" + let testLine = assertEquals ("getActivitiesFromUser(\"" ++ emailNoSpaces ++ "\").size()") "0" + return + [ setupLine + , userLine + , userCodeLine + , activitiesDecl + , forAddLine + , activityIdsDecl + , forGetIdLine + , forRemoveLine + , testLine + ] + +removeActivityFromUserTemplate :: TestTemplate +removeActivityFromUserTemplate = genToTestTemplate "removeActivityFromUserTest" removeActivityFromUserTestGenerator 1 diff --git a/src/testgen/testgen/TestClass.hs b/src/testgen/testgen/TestClass.hs index 9e0d858..7e8d155 100644 --- a/src/testgen/testgen/TestClass.hs +++ b/src/testgen/testgen/TestClass.hs @@ -28,7 +28,8 @@ templates = [ equalityTemplate, getActivitiesFromUserTemplate, - addActivityToUserTemplate + addActivityToUserTemplate, + removeActivityFromUserTemplate ] generateTests :: IO [String] From ac8f19cd00120a9e61ff4057b0eabda439c80c13 Mon Sep 17 00:00:00 2001 From: Mariana Date: Wed, 4 Jun 2025 00:47:51 +0100 Subject: [PATCH 05/14] add createTrainingPlan --- src/testgen/testgen/FacadeTemplates.hs | 62 ++++++++++++++++++++++---- src/testgen/testgen/Generators.hs | 47 ++++++++++++++++++- src/testgen/testgen/TestClass.hs | 5 ++- 3 files changed, 103 insertions(+), 11 deletions(-) diff --git a/src/testgen/testgen/FacadeTemplates.hs b/src/testgen/testgen/FacadeTemplates.hs index 71c0e73..f7001b3 100644 --- a/src/testgen/testgen/FacadeTemplates.hs +++ b/src/testgen/testgen/FacadeTemplates.hs @@ -17,10 +17,12 @@ module FacadeTemplates ( emailTemplate, getActivitiesFromUserTemplate, addActivityToUserTemplate, - removeActivityFromUserTemplate + removeActivityFromUserTemplate, + createTrainingPlanTemplate, + createTrainingPlanExceptionTemplate ) where -import Java (assertEquals, assertTrue, runJava, toJavaExpression, toJavaExpressionList, JavaData (toJavaExpression)) +import Java (assertEquals, assertTrue, runJava, toJavaExpression, toJavaExpressionList, JavaData (toJavaExpression), assertThrows) import TestTemplate (TestTemplate(..), genToTestTemplate) import Test.QuickCheck (Gen, arbitrary, elements, generate, listOf, Arbitrary (arbitrary)) import Generators @@ -62,7 +64,7 @@ emailTestGenerator = do emailTemplate :: TestTemplate emailTemplate = TestTemplate "validEmail" emailTestGenerator 1 --- getActivitiesFromUser +-- getActivitiesFromUser -> needs a throws Exception userEmail :: User -> String userEmail (Amateur _ _ _ _ _ _ _ _ _ email _) = email userEmail (Occasional _ _ _ _ _ _ _ _ _ email _ _) = email @@ -88,7 +90,7 @@ getActivitiesFromUserTestGenerator = do let emailNoSpaces = filter (/= ' ') email let userVarName = "user" let setupLine = "MakeItFit model = new MakeItFit();" - let userLine = "model.create(" ++ toJavaExpression user ++ ")" + let userLine = "model.create(" ++ toJavaCreateUserArgs user ++ ");" let userCodeLine = "UUID userCode = model.getUser(" ++ toJavaExpression email ++ ").getCode();" let activitiesVar = "activities" let activitiesDecl = "List " ++ activitiesVar ++ " = Arrays.asList(" ++ intercalate ", " (map toJavaExpression (activities)) ++ ");" @@ -99,7 +101,7 @@ getActivitiesFromUserTestGenerator = do getActivitiesFromUserTemplate :: TestTemplate getActivitiesFromUserTemplate = genToTestTemplate "getActivitiesFromUserTest" getActivitiesFromUserTestGenerator 1 --- addActivityToUser +-- addActivityToUser -> needs a throws Exception addActivityToUserTestGenerator :: Gen [String] addActivityToUserTestGenerator = do user <- arbitrary :: Gen User @@ -109,7 +111,7 @@ addActivityToUserTestGenerator = do let emailNoSpaces = filter (/= ' ') email let userVarName = "user" let setupLine = "MakeItFit model = new MakeItFit();" - let userLine = "model.create(" ++ toJavaExpression user ++ ")" + let userLine = "model.create(" ++ toJavaCreateUserArgs user ++ ");" let userCodeLine = "UUID userCode = model.getUser(" ++ toJavaExpression email ++ ").getCode();" let activitiesVar = "activities" let activitiesDecl = "List " ++ activitiesVar ++ " = Arrays.asList(" ++ intercalate ", " (map toJavaExpression activities) ++ ");" @@ -123,7 +125,7 @@ addActivityToUserTestGenerator = do addActivityToUserTemplate :: TestTemplate addActivityToUserTemplate = genToTestTemplate "addActivityToUserTest" addActivityToUserTestGenerator 1 --- removeActivityFromUser +-- removeActivityFromUser -> needs a throws Exception removeActivityFromUserTestGenerator :: Gen [String] removeActivityFromUserTestGenerator = do user <- arbitrary :: Gen User @@ -132,7 +134,7 @@ removeActivityFromUserTestGenerator = do let activities = map (userCodeActivity "userCode") (userActivities user) let emailNoSpaces = filter (/= ' ') email let setupLine = "MakeItFit model = new MakeItFit();" - let userLine = "model.create(" ++ toJavaExpression user ++ ");" + let userLine = "model.create(" ++ toJavaCreateUserArgs user ++ ");" let userCodeLine = "UUID userCode = model.getUser(" ++ toJavaExpression email ++ ").getCode();" let activitiesVar = "activities" let activitiesDecl = "List " ++ activitiesVar ++ " = Arrays.asList(" ++ intercalate ", " (map toJavaExpression activities) ++ ");" @@ -156,3 +158,47 @@ removeActivityFromUserTestGenerator = do removeActivityFromUserTemplate :: TestTemplate removeActivityFromUserTemplate = genToTestTemplate "removeActivityFromUserTest" removeActivityFromUserTestGenerator 1 + +-- createTrainingPlan -> needs a throws Exception +createTrainingPlanTestGenerator :: Gen [String] +createTrainingPlanTestGenerator = do + user <- arbitrary :: Gen User + let email = userEmail user + date <- arbitrary :: Gen MakeItFitDate + let setupLine = "MakeItFit model = new MakeItFit();" + let userLine = "model.create(" ++ toJavaCreateUserArgs user ++ ");" + let userCodeLine = "UUID userCode = model.getUser(" ++ toJavaExpression email ++ ").getCode();" + let dateLine = "MakeItFitDate startDate = " ++ toJavaExpression date ++ ";" + let planCodeLine = "UUID planCode = model.createTrainingPlan(userCode, startDate);" + let assertLine = "assertNotNull(planCode);" + return + [ setupLine + , userLine + , userCodeLine + , dateLine + , planCodeLine + , assertLine + ] + +createTrainingPlanTemplate :: TestTemplate +createTrainingPlanTemplate = genToTestTemplate "createTrainingPlanTest" createTrainingPlanTestGenerator 1 + +createTrainingPlanExceptionTestGenerator :: Gen [String] +createTrainingPlanExceptionTestGenerator = do + user <- arbitrary :: Gen User + let email = userEmail user + date <- arbitrary :: Gen MakeItFitDate + let setupLine = "MakeItFit model = new MakeItFit();" + let userLine = "model.create(" ++ toJavaCreateUserArgs user ++ ");" + let userCodeLine = "UUID userCode = model.getUser(" ++ toJavaExpression email ++ ").getCode();" + let planCodeLine = "UUID planCode = model.createTrainingPlan(userCode, null);" + let assertThrowsLines = assertThrows "IllegalArgumentException" ["model.createTrainingPlan(userCode, null);"] + return + ([ setupLine + , userLine + , userCodeLine + , planCodeLine + ] ++ assertThrowsLines) + +createTrainingPlanExceptionTemplate :: TestTemplate +createTrainingPlanExceptionTemplate = genToTestTemplate "createTrainingPlanExceptionTest" createTrainingPlanExceptionTestGenerator 1 \ No newline at end of file diff --git a/src/testgen/testgen/Generators.hs b/src/testgen/testgen/Generators.hs index 35b0585..7c07520 100644 --- a/src/testgen/testgen/Generators.hs +++ b/src/testgen/testgen/Generators.hs @@ -22,7 +22,8 @@ module Generators , Activity(..) , TrainingPlan(..) , genActivity - , genTrainingPlan + , genTrainingPlan, + toJavaCreateUserArgs ) where import Data.List (intercalate) @@ -224,6 +225,50 @@ instance JavaData User where Occasional _ _ _ _ _ _ _ _ _ _ _ activities -> activities Professional _ _ _ _ _ _ _ _ _ _ _ activities -> activities +toJavaCreateUserArgs :: User -> String +toJavaCreateUserArgs (Amateur name age gender weight height bpm level address phone email _) = + intercalate ", " [ toJavaExpression name + , toJavaExpression age + , toJavaExpression gender + , toJavaExpression weight + , toJavaExpression height + , toJavaExpression bpm + , toJavaExpression level + , toJavaExpression address + , toJavaExpression phone + , toJavaExpression email + , "0" -- valor default para frequency + , "\"Amateur\"" + ] +toJavaCreateUserArgs (Occasional name age gender weight height bpm level address phone email freq _) = + intercalate ", " [ toJavaExpression name + , toJavaExpression age + , toJavaExpression gender + , toJavaExpression weight + , toJavaExpression height + , toJavaExpression bpm + , toJavaExpression level + , toJavaExpression address + , toJavaExpression phone + , toJavaExpression email + , toJavaExpression freq + , "\"Occasional\"" + ] +toJavaCreateUserArgs (Professional name age gender weight height bpm level address phone email freq _) = + intercalate ", " [ toJavaExpression name + , toJavaExpression age + , toJavaExpression gender + , toJavaExpression weight + , toJavaExpression height + , toJavaExpression bpm + , toJavaExpression level + , toJavaExpression address + , toJavaExpression phone + , toJavaExpression email + , toJavaExpression freq + , "\"Professional\"" + ] + -- | A MakeItFit date (YYYY/MM/DD) data MakeItFitDate = MakeItFitDate Int Int Int deriving (Show, Eq, Ord) diff --git a/src/testgen/testgen/TestClass.hs b/src/testgen/testgen/TestClass.hs index 7e8d155..484e2e9 100644 --- a/src/testgen/testgen/TestClass.hs +++ b/src/testgen/testgen/TestClass.hs @@ -26,10 +26,11 @@ import FacadeTemplates templates = [ - equalityTemplate, getActivitiesFromUserTemplate, addActivityToUserTemplate, - removeActivityFromUserTemplate + removeActivityFromUserTemplate, + createTrainingPlanTemplate, + createTrainingPlanExceptionTemplate ] generateTests :: IO [String] From a4d069d8d4e655509565dd6548304d515d14347a Mon Sep 17 00:00:00 2001 From: Mariana Date: Wed, 4 Jun 2025 00:56:41 +0100 Subject: [PATCH 06/14] add constructTrainingPlan --- src/testgen/testgen/FacadeTemplates.hs | 47 ++++++++++++++++++++++++-- src/testgen/testgen/TestClass.hs | 4 ++- 2 files changed, 48 insertions(+), 3 deletions(-) diff --git a/src/testgen/testgen/FacadeTemplates.hs b/src/testgen/testgen/FacadeTemplates.hs index f7001b3..f838c95 100644 --- a/src/testgen/testgen/FacadeTemplates.hs +++ b/src/testgen/testgen/FacadeTemplates.hs @@ -19,7 +19,9 @@ module FacadeTemplates ( addActivityToUserTemplate, removeActivityFromUserTemplate, createTrainingPlanTemplate, - createTrainingPlanExceptionTemplate + createTrainingPlanExceptionTemplate, + constructTrainingPlanTemplate, + constructTrainingPlanExceptionTemplate ) where import Java (assertEquals, assertTrue, runJava, toJavaExpression, toJavaExpressionList, JavaData (toJavaExpression), assertThrows) @@ -201,4 +203,45 @@ createTrainingPlanExceptionTestGenerator = do ] ++ assertThrowsLines) createTrainingPlanExceptionTemplate :: TestTemplate -createTrainingPlanExceptionTemplate = genToTestTemplate "createTrainingPlanExceptionTest" createTrainingPlanExceptionTestGenerator 1 \ No newline at end of file +createTrainingPlanExceptionTemplate = genToTestTemplate "createTrainingPlanExceptionTest" createTrainingPlanExceptionTestGenerator 1 + +-- ConstructTrainingPlan -> needs a throws Exception +constructTrainingPlanTestGenerator :: Gen [String] +constructTrainingPlanTestGenerator = do + user <- arbitrary :: Gen User + let email = userEmail user + date <- arbitrary :: Gen MakeItFitDate + let userLine = "model.create(" ++ toJavaCreateUserArgs user ++ ");" + let userCodeLine = "UUID userCode = model.getUser(" ++ toJavaExpression email ++ ").getCode();" + let dateLine = "MakeItFitDate startDate = " ++ toJavaExpression date ++ ";" + let planCodeLine = "UUID planCode = model.createTrainingPlan(userCode, startDate);" + let planLine = "TrainingPlan plan = model.getTrainingPlan(planCode);" + let assertLine = "assertDoesNotThrow(() -> { model.constructTrainingPlanByObjectives(plan, true, 2, 3, 4, 500); });" + return + [ userLine + , userCodeLine + , dateLine + , planCodeLine + , planLine + , assertLine + ] + +constructTrainingPlanTemplate :: TestTemplate +constructTrainingPlanTemplate = genToTestTemplate "constructTrainingPlanTest" constructTrainingPlanTestGenerator 1 + +constructTrainingPlanExceptionTestGenerator :: Gen [String] +constructTrainingPlanExceptionTestGenerator = do + date <- arbitrary :: Gen MakeItFitDate + let fakeUserCodeLine = "UUID fakeUserCode = UUID.randomUUID();" + let dateLine = "MakeItFitDate startDate = " ++ toJavaExpression date ++ ";" + let fakePlanLine = "TrainingPlan fakePlan = new TrainingPlan(fakeUserCode, startDate);" + let assertLine = assertThrows "(EntityDoesNotExistException" ["model.constructTrainingPlanByObjectives(fakePlan, true, 2, 3, 4, 500);"] + return + ([ fakeUserCodeLine + , dateLine + , fakePlanLine + ] ++ assertLine) + +constructTrainingPlanExceptionTemplate :: TestTemplate +constructTrainingPlanExceptionTemplate = + genToTestTemplate "constructTrainingPlanExceptionTest" constructTrainingPlanExceptionTestGenerator 1 diff --git a/src/testgen/testgen/TestClass.hs b/src/testgen/testgen/TestClass.hs index 484e2e9..3bfeed0 100644 --- a/src/testgen/testgen/TestClass.hs +++ b/src/testgen/testgen/TestClass.hs @@ -30,7 +30,9 @@ templates = addActivityToUserTemplate, removeActivityFromUserTemplate, createTrainingPlanTemplate, - createTrainingPlanExceptionTemplate + createTrainingPlanExceptionTemplate, + constructTrainingPlanTemplate, + constructTrainingPlanExceptionTemplate ] generateTests :: IO [String] From 5eea2a14e58ec134b0b60b582947f25469f30acd Mon Sep 17 00:00:00 2001 From: Mariana Date: Wed, 4 Jun 2025 01:07:58 +0100 Subject: [PATCH 07/14] add getTrainingPlan --- src/testgen/testgen/FacadeTemplates.hs | 71 +++++++++++++++++++++++++- src/testgen/testgen/TestClass.hs | 5 +- 2 files changed, 74 insertions(+), 2 deletions(-) diff --git a/src/testgen/testgen/FacadeTemplates.hs b/src/testgen/testgen/FacadeTemplates.hs index f838c95..12c25fd 100644 --- a/src/testgen/testgen/FacadeTemplates.hs +++ b/src/testgen/testgen/FacadeTemplates.hs @@ -21,7 +21,10 @@ module FacadeTemplates ( createTrainingPlanTemplate, createTrainingPlanExceptionTemplate, constructTrainingPlanTemplate, - constructTrainingPlanExceptionTemplate + constructTrainingPlanExceptionTemplate, + removeTrainingPlanTemplate, + getTrainingPlanTemplate, + getTrainingPlanExceptionTemplate ) where import Java (assertEquals, assertTrue, runJava, toJavaExpression, toJavaExpressionList, JavaData (toJavaExpression), assertThrows) @@ -245,3 +248,69 @@ constructTrainingPlanExceptionTestGenerator = do constructTrainingPlanExceptionTemplate :: TestTemplate constructTrainingPlanExceptionTemplate = genToTestTemplate "constructTrainingPlanExceptionTest" constructTrainingPlanExceptionTestGenerator 1 + +-- removeTrainingPlan +removeTrainingPlanTestGenerator :: Gen [String] +removeTrainingPlanTestGenerator = do + user <- arbitrary :: Gen User + let email = userEmail user + date <- arbitrary :: Gen MakeItFitDate + let userLine = "model.create(" ++ toJavaCreateUserArgs user ++ ");" + let userCodeLine = "UUID userCode = model.getUser(" ++ toJavaExpression email ++ ").getCode();" + let dateLine = "MakeItFitDate startDate = " ++ toJavaExpression date ++ ";" + let planCodeLine = "UUID planCode = model.createTrainingPlan(userCode, startDate);" + let removeLine = "model.removeTrainingPlan(planCode);" + let assertLine = assertThrows "IllegalArgumentException" ["model.getTrainingPlan(planCode);"] + return + ([ userLine + , userCodeLine + , dateLine + , planCodeLine + , removeLine + ] ++ assertLine) + +removeTrainingPlanTemplate :: TestTemplate +removeTrainingPlanTemplate = + genToTestTemplate "removeTrainingPlanTest" removeTrainingPlanTestGenerator 1 + +-- getTrainingPlan -> needs a throws Exception +getTrainingPlanTestGenerator :: Gen [String] +getTrainingPlanTestGenerator = do + user <- arbitrary :: Gen User + let email = userEmail user + date <- arbitrary :: Gen MakeItFitDate + let userLine = "model.create(" ++ toJavaCreateUserArgs user ++ ");" + let userCodeLine = "UUID userCode = model.getUser(" ++ toJavaExpression email ++ ").getCode();" + let dateLine = "MakeItFitDate startDate = " ++ toJavaExpression date ++ ";" + let planCodeLine = "UUID planCode = model.createTrainingPlan(userCode, startDate);" + let retrievedLine = "TrainingPlan retrievedPlan = model.getTrainingPlan(planCode);" + let assertNotNullLine = "assertNotNull(retrievedPlan);" + let assertEqualsLine = "assertEquals(planCode, retrievedPlan.getCode());" + return + [ userLine + , userCodeLine + , dateLine + , planCodeLine + , retrievedLine + , assertNotNullLine + , assertEqualsLine + ] + +getTrainingPlanTemplate :: TestTemplate +getTrainingPlanTemplate = + genToTestTemplate "getTrainingPlanTest" getTrainingPlanTestGenerator 1 + +getTrainingPlanExceptionTestGenerator :: Gen [String] +getTrainingPlanExceptionTestGenerator = do + let invalidCodeLine = "UUID invalidCode = UUID.randomUUID();" + let assertLine = "assertThrows(IllegalArgumentException.class, () -> { model.getTrainingPlan(invalidCode); });" + return + [ invalidCodeLine + , assertLine + ] + +getTrainingPlanExceptionTemplate :: TestTemplate +getTrainingPlanExceptionTemplate = + genToTestTemplate "getTrainingPlanExceptionTest" getTrainingPlanExceptionTestGenerator 1 + + diff --git a/src/testgen/testgen/TestClass.hs b/src/testgen/testgen/TestClass.hs index 3bfeed0..c9d7a9e 100644 --- a/src/testgen/testgen/TestClass.hs +++ b/src/testgen/testgen/TestClass.hs @@ -32,7 +32,10 @@ templates = createTrainingPlanTemplate, createTrainingPlanExceptionTemplate, constructTrainingPlanTemplate, - constructTrainingPlanExceptionTemplate + constructTrainingPlanExceptionTemplate, + removeTrainingPlanTemplate, + getTrainingPlanTemplate, + getTrainingPlanExceptionTemplate ] generateTests :: IO [String] From 4167b584a5235a219566aa6c56818defabaf6efe Mon Sep 17 00:00:00 2001 From: Mariana Date: Wed, 4 Jun 2025 01:17:28 +0100 Subject: [PATCH 08/14] add updateTrainingPlan --- src/testgen/testgen/FacadeTemplates.hs | 52 +++++++++++++++++++++++++- src/testgen/testgen/TestClass.hs | 4 +- 2 files changed, 54 insertions(+), 2 deletions(-) diff --git a/src/testgen/testgen/FacadeTemplates.hs b/src/testgen/testgen/FacadeTemplates.hs index 12c25fd..a125086 100644 --- a/src/testgen/testgen/FacadeTemplates.hs +++ b/src/testgen/testgen/FacadeTemplates.hs @@ -24,7 +24,9 @@ module FacadeTemplates ( constructTrainingPlanExceptionTemplate, removeTrainingPlanTemplate, getTrainingPlanTemplate, - getTrainingPlanExceptionTemplate + getTrainingPlanExceptionTemplate, + updateTrainingPlanTemplate, + updateTrainingPlanExceptionTemplate ) where import Java (assertEquals, assertTrue, runJava, toJavaExpression, toJavaExpressionList, JavaData (toJavaExpression), assertThrows) @@ -313,4 +315,52 @@ getTrainingPlanExceptionTemplate :: TestTemplate getTrainingPlanExceptionTemplate = genToTestTemplate "getTrainingPlanExceptionTest" getTrainingPlanExceptionTestGenerator 1 +-- updateTrainingPlan -> needs a throws Exception +updateTrainingPlanTestGenerator :: Gen [String] +updateTrainingPlanTestGenerator = do + user <- arbitrary :: Gen User + let email = userEmail user + date1 <- arbitrary :: Gen MakeItFitDate + date2 <- arbitrary :: Gen MakeItFitDate + let userLine = "model.create(" ++ toJavaCreateUserArgs user ++ ");" + let userCodeLine = "UUID userCode = model.getUser(" ++ toJavaExpression email ++ ").getCode();" + let dateLine1 = "MakeItFitDate startDate = " ++ toJavaExpression date1 ++ ";" + let planCodeLine = "UUID planCode = model.createTrainingPlan(userCode, startDate);" + let planLine = "TrainingPlan plan = model.getTrainingPlan(planCode);" + let setDateLine = "plan.setStartDate(" ++ toJavaExpression date2 ++ ");" + let assertDoesNotThrowLine = "assertDoesNotThrow(() -> model.updateTrainingPlan(plan));" + let updatedLine = "TrainingPlan updated = model.getTrainingPlan(planCode);" + let assertEqualsLine = assertEquals (toJavaExpression date2) "updated.getStartDate()" + return + [ userLine + , userCodeLine + , dateLine1 + , planCodeLine + , planLine + , setDateLine + , assertDoesNotThrowLine + , updatedLine + , assertEqualsLine + ] + +updateTrainingPlanTemplate :: TestTemplate +updateTrainingPlanTemplate = + genToTestTemplate "updateTrainingPlanTest" updateTrainingPlanTestGenerator 1 + +updateTrainingPlanExceptionTestGenerator :: Gen [String] +updateTrainingPlanExceptionTestGenerator = do + date <- arbitrary :: Gen MakeItFitDate + let dateLine = "MakeItFitDate startDate = " ++ toJavaExpression date ++ ";" + let fakePlanLine = "TrainingPlan fakePlan = new TrainingPlan(UUID.randomUUID(), startDate);" + let assertLine = "assertThrows(EntityDoesNotExistException.class, () -> { model.updateTrainingPlan(fakePlan); });" + return + [ dateLine + , fakePlanLine + , assertLine + ] + +updateTrainingPlanExceptionTemplate :: TestTemplate +updateTrainingPlanExceptionTemplate = + genToTestTemplate "updateTrainingPlanExceptionTest" updateTrainingPlanExceptionTestGenerator 1 + diff --git a/src/testgen/testgen/TestClass.hs b/src/testgen/testgen/TestClass.hs index c9d7a9e..b65c431 100644 --- a/src/testgen/testgen/TestClass.hs +++ b/src/testgen/testgen/TestClass.hs @@ -35,7 +35,9 @@ templates = constructTrainingPlanExceptionTemplate, removeTrainingPlanTemplate, getTrainingPlanTemplate, - getTrainingPlanExceptionTemplate + getTrainingPlanExceptionTemplate, + updateTrainingPlanTemplate, + updateTrainingPlanExceptionTemplate ] generateTests :: IO [String] From 675393d00d07aea45853e4281c3d72f809002a1f Mon Sep 17 00:00:00 2001 From: Mariana Date: Wed, 4 Jun 2025 01:48:10 +0100 Subject: [PATCH 09/14] add getAllTrainingPlansTemplate, addActivityToTrainingPlanTemplate, removeActivityFromTrainingPlanTemplate, getTrainingPlansFromUserTemplate --- src/testgen/testgen/FacadeTemplates.hs | 258 +++++++++++++++++++++---- src/testgen/testgen/Generators.hs | 6 +- src/testgen/testgen/TestClass.hs | 6 +- 3 files changed, 226 insertions(+), 44 deletions(-) diff --git a/src/testgen/testgen/FacadeTemplates.hs b/src/testgen/testgen/FacadeTemplates.hs index a125086..1f7893b 100644 --- a/src/testgen/testgen/FacadeTemplates.hs +++ b/src/testgen/testgen/FacadeTemplates.hs @@ -26,10 +26,15 @@ module FacadeTemplates ( getTrainingPlanTemplate, getTrainingPlanExceptionTemplate, updateTrainingPlanTemplate, - updateTrainingPlanExceptionTemplate + updateTrainingPlanExceptionTemplate, + getAllTrainingPlansTemplate, + addActivityToTrainingPlanTemplate, + removeActivityFromTrainingPlanTemplate, + getTrainingPlansFromUserTemplate ) where -import Java (assertEquals, assertTrue, runJava, toJavaExpression, toJavaExpressionList, JavaData (toJavaExpression), assertThrows) +import Java (assertEquals, assertTrue, runJava, toJavaExpression, toJavaExpressionList, + JavaData (toJavaExpression), assertThrows) import TestTemplate (TestTemplate(..), genToTestTemplate) import Test.QuickCheck (Gen, arbitrary, elements, generate, listOf, Arbitrary (arbitrary)) import Generators @@ -100,13 +105,18 @@ getActivitiesFromUserTestGenerator = do let userLine = "model.create(" ++ toJavaCreateUserArgs user ++ ");" let userCodeLine = "UUID userCode = model.getUser(" ++ toJavaExpression email ++ ").getCode();" let activitiesVar = "activities" - let activitiesDecl = "List " ++ activitiesVar ++ " = Arrays.asList(" ++ intercalate ", " (map toJavaExpression (activities)) ++ ");" - let forLine = "for (Activity a : " ++ activitiesVar ++ ") model.addActivityToUser(" ++ toJavaExpression emailNoSpaces ++ ", a);" - let testLine = assertEquals ("getActivitiesFromUser(\"" ++ emailNoSpaces ++ "\").size()") (toJavaExpression activitiesLen) - return ([setupLine] ++ [userLine] ++ [";"] ++ [userCodeLine, activitiesDecl, forLine] ++ [testLine]) + let activitiesDecl = "List " ++ activitiesVar ++ " = Arrays.asList(" ++ + intercalate ", " (map toJavaExpression (activities)) ++ ");" + let forLine = "for (Activity a : " ++ activitiesVar ++ ") model.addActivityToUser(" ++ + toJavaExpression emailNoSpaces ++ ", a);" + let testLine = assertEquals ("getActivitiesFromUser(\"" ++ emailNoSpaces ++ "\").size()") + (toJavaExpression activitiesLen) + return ([setupLine] ++ [userLine] ++ [";"] ++ [userCodeLine, activitiesDecl, forLine] ++ + [testLine]) getActivitiesFromUserTemplate :: TestTemplate -getActivitiesFromUserTemplate = genToTestTemplate "getActivitiesFromUserTest" getActivitiesFromUserTestGenerator 1 +getActivitiesFromUserTemplate = genToTestTemplate "getActivitiesFromUserTest" + getActivitiesFromUserTestGenerator 1 -- addActivityToUser -> needs a throws Exception addActivityToUserTestGenerator :: Gen [String] @@ -121,16 +131,23 @@ addActivityToUserTestGenerator = do let userLine = "model.create(" ++ toJavaCreateUserArgs user ++ ");" let userCodeLine = "UUID userCode = model.getUser(" ++ toJavaExpression email ++ ").getCode();" let activitiesVar = "activities" - let activitiesDecl = "List " ++ activitiesVar ++ " = Arrays.asList(" ++ intercalate ", " (map toJavaExpression activities) ++ ");" - let forLine = "for (Activity a : " ++ activitiesVar ++ ") model.addActivityToUser(" ++ toJavaExpression emailNoSpaces ++ ", a);" - let testLineBefore = assertEquals ("getActivitiesFromUser(\"" ++ emailNoSpaces ++ "\").size()") (toJavaExpression activitiesLen) + let activitiesDecl = "List " ++ activitiesVar ++ " = Arrays.asList(" ++ + intercalate ", " (map toJavaExpression activities) ++ ");" + let forLine = "for (Activity a : " ++ activitiesVar ++ ") model.addActivityToUser(" ++ + toJavaExpression emailNoSpaces ++ ", a);" + let testLineBefore = assertEquals ("getActivitiesFromUser(\"" ++ emailNoSpaces ++ "\").size()") + (toJavaExpression activitiesLen) activityToAdd <- genActivity "userCode" - let activityAdd = "model.addActivityToUser(" ++ toJavaExpression emailNoSpaces ++ ", " ++ toJavaExpression activityToAdd ++ ");" - let testLineAfter = assertEquals ("getActivitiesFromUser(\"" ++ emailNoSpaces ++ "\").size()") (toJavaExpression (activitiesLen + 1)) - return ([setupLine] ++ [userLine] ++ [";"] ++ [userCodeLine, activitiesDecl, forLine, testLineBefore, activityAdd, testLineAfter]) + let activityAdd = "model.addActivityToUser(" ++ toJavaExpression emailNoSpaces ++ ", " ++ + toJavaExpression activityToAdd ++ ");" + let testLineAfter = assertEquals ("getActivitiesFromUser(\"" ++ emailNoSpaces ++ "\").size()") + (toJavaExpression (activitiesLen + 1)) + return ([setupLine, userLine] ++ [";"] ++ [userCodeLine, activitiesDecl, forLine, + testLineBefore, activityAdd, testLineAfter]) addActivityToUserTemplate :: TestTemplate -addActivityToUserTemplate = genToTestTemplate "addActivityToUserTest" addActivityToUserTestGenerator 1 +addActivityToUserTemplate = genToTestTemplate "addActivityToUserTest" + addActivityToUserTestGenerator 1 -- removeActivityFromUser -> needs a throws Exception removeActivityFromUserTestGenerator :: Gen [String] @@ -144,12 +161,16 @@ removeActivityFromUserTestGenerator = do let userLine = "model.create(" ++ toJavaCreateUserArgs user ++ ");" let userCodeLine = "UUID userCode = model.getUser(" ++ toJavaExpression email ++ ").getCode();" let activitiesVar = "activities" - let activitiesDecl = "List " ++ activitiesVar ++ " = Arrays.asList(" ++ intercalate ", " (map toJavaExpression activities) ++ ");" - let forAddLine = "for (Activity a : " ++ activitiesVar ++ ") model.addActivityToUser(" ++ toJavaExpression emailNoSpaces ++ ", a);" + let activitiesDecl = "List " ++ activitiesVar ++ " = Arrays.asList(" ++ + intercalate ", " (map toJavaExpression activities) ++ ");" + let forAddLine = "for (Activity a : " ++ activitiesVar ++ ") model.addActivityToUser(" ++ + toJavaExpression emailNoSpaces ++ ", a);" let activityIdsVar = "activityIds" let activityIdsDecl = "List " ++ activityIdsVar ++ " = new java.util.ArrayList<>();" - let forGetIdLine = "for (Activity a : " ++ activitiesVar ++ ") " ++ activityIdsVar ++ ".add(a.getCode());" - let forRemoveLine = "for (UUID activityId : " ++ activityIdsVar ++ ") model.removeActivityFromUser(" ++ toJavaExpression emailNoSpaces ++ ", activityId);" + let forGetIdLine = "for (Activity a : " ++ activitiesVar ++ ") " ++ activityIdsVar ++ + ".add(a.getCode());" + let forRemoveLine = "for (UUID activityId : " ++ activityIdsVar ++ + ") model.removeActivityFromUser(" ++ toJavaExpression emailNoSpaces ++ ", activityId);" let testLine = assertEquals ("getActivitiesFromUser(\"" ++ emailNoSpaces ++ "\").size()") "0" return [ setupLine @@ -164,7 +185,8 @@ removeActivityFromUserTestGenerator = do ] removeActivityFromUserTemplate :: TestTemplate -removeActivityFromUserTemplate = genToTestTemplate "removeActivityFromUserTest" removeActivityFromUserTestGenerator 1 +removeActivityFromUserTemplate = genToTestTemplate "removeActivityFromUserTest" + removeActivityFromUserTestGenerator 1 -- createTrainingPlan -> needs a throws Exception createTrainingPlanTestGenerator :: Gen [String] @@ -188,7 +210,8 @@ createTrainingPlanTestGenerator = do ] createTrainingPlanTemplate :: TestTemplate -createTrainingPlanTemplate = genToTestTemplate "createTrainingPlanTest" createTrainingPlanTestGenerator 1 +createTrainingPlanTemplate = genToTestTemplate "createTrainingPlanTest" + createTrainingPlanTestGenerator 1 createTrainingPlanExceptionTestGenerator :: Gen [String] createTrainingPlanExceptionTestGenerator = do @@ -199,7 +222,8 @@ createTrainingPlanExceptionTestGenerator = do let userLine = "model.create(" ++ toJavaCreateUserArgs user ++ ");" let userCodeLine = "UUID userCode = model.getUser(" ++ toJavaExpression email ++ ").getCode();" let planCodeLine = "UUID planCode = model.createTrainingPlan(userCode, null);" - let assertThrowsLines = assertThrows "IllegalArgumentException" ["model.createTrainingPlan(userCode, null);"] + let assertThrowsLines = assertThrows "IllegalArgumentException" + ["model.createTrainingPlan(userCode, null);"] return ([ setupLine , userLine @@ -208,7 +232,8 @@ createTrainingPlanExceptionTestGenerator = do ] ++ assertThrowsLines) createTrainingPlanExceptionTemplate :: TestTemplate -createTrainingPlanExceptionTemplate = genToTestTemplate "createTrainingPlanExceptionTest" createTrainingPlanExceptionTestGenerator 1 +createTrainingPlanExceptionTemplate = genToTestTemplate "createTrainingPlanExceptionTest" + createTrainingPlanExceptionTestGenerator 1 -- ConstructTrainingPlan -> needs a throws Exception constructTrainingPlanTestGenerator :: Gen [String] @@ -216,14 +241,17 @@ constructTrainingPlanTestGenerator = do user <- arbitrary :: Gen User let email = userEmail user date <- arbitrary :: Gen MakeItFitDate + let setupLine = "MakeItFit model = new MakeItFit();" let userLine = "model.create(" ++ toJavaCreateUserArgs user ++ ");" let userCodeLine = "UUID userCode = model.getUser(" ++ toJavaExpression email ++ ").getCode();" let dateLine = "MakeItFitDate startDate = " ++ toJavaExpression date ++ ";" let planCodeLine = "UUID planCode = model.createTrainingPlan(userCode, startDate);" let planLine = "TrainingPlan plan = model.getTrainingPlan(planCode);" - let assertLine = "assertDoesNotThrow(() -> { model.constructTrainingPlanByObjectives(plan, true, 2, 3, 4, 500); });" + let assertLine = "assertDoesNotThrow(() -> { model.constructTrainingPlanByObjectives(plan," ++ + " true, 2, 3, 4, 500); });" return - [ userLine + [ setupLine + , userLine , userCodeLine , dateLine , planCodeLine @@ -232,24 +260,28 @@ constructTrainingPlanTestGenerator = do ] constructTrainingPlanTemplate :: TestTemplate -constructTrainingPlanTemplate = genToTestTemplate "constructTrainingPlanTest" constructTrainingPlanTestGenerator 1 +constructTrainingPlanTemplate = genToTestTemplate "constructTrainingPlanTest" + constructTrainingPlanTestGenerator 1 constructTrainingPlanExceptionTestGenerator :: Gen [String] constructTrainingPlanExceptionTestGenerator = do date <- arbitrary :: Gen MakeItFitDate + let setupLine = "MakeItFit model = new MakeItFit();" let fakeUserCodeLine = "UUID fakeUserCode = UUID.randomUUID();" let dateLine = "MakeItFitDate startDate = " ++ toJavaExpression date ++ ";" let fakePlanLine = "TrainingPlan fakePlan = new TrainingPlan(fakeUserCode, startDate);" - let assertLine = assertThrows "(EntityDoesNotExistException" ["model.constructTrainingPlanByObjectives(fakePlan, true, 2, 3, 4, 500);"] + let assertLine = assertThrows "(EntityDoesNotExistException" + ["model.constructTrainingPlanByObjectives(fakePlan, true, 2, 3, 4, 500);"] return - ([ fakeUserCodeLine + ([setupLine + , fakeUserCodeLine , dateLine , fakePlanLine ] ++ assertLine) constructTrainingPlanExceptionTemplate :: TestTemplate -constructTrainingPlanExceptionTemplate = - genToTestTemplate "constructTrainingPlanExceptionTest" constructTrainingPlanExceptionTestGenerator 1 +constructTrainingPlanExceptionTemplate = genToTestTemplate "constructTrainingPlanExceptionTest" + constructTrainingPlanExceptionTestGenerator 1 -- removeTrainingPlan removeTrainingPlanTestGenerator :: Gen [String] @@ -257,6 +289,7 @@ removeTrainingPlanTestGenerator = do user <- arbitrary :: Gen User let email = userEmail user date <- arbitrary :: Gen MakeItFitDate + let setupLine = "MakeItFit model = new MakeItFit();" let userLine = "model.create(" ++ toJavaCreateUserArgs user ++ ");" let userCodeLine = "UUID userCode = model.getUser(" ++ toJavaExpression email ++ ").getCode();" let dateLine = "MakeItFitDate startDate = " ++ toJavaExpression date ++ ";" @@ -264,7 +297,8 @@ removeTrainingPlanTestGenerator = do let removeLine = "model.removeTrainingPlan(planCode);" let assertLine = assertThrows "IllegalArgumentException" ["model.getTrainingPlan(planCode);"] return - ([ userLine + ([setupLine + , userLine , userCodeLine , dateLine , planCodeLine @@ -281,15 +315,17 @@ getTrainingPlanTestGenerator = do user <- arbitrary :: Gen User let email = userEmail user date <- arbitrary :: Gen MakeItFitDate + let setupLine = "MakeItFit model = new MakeItFit();" let userLine = "model.create(" ++ toJavaCreateUserArgs user ++ ");" let userCodeLine = "UUID userCode = model.getUser(" ++ toJavaExpression email ++ ").getCode();" let dateLine = "MakeItFitDate startDate = " ++ toJavaExpression date ++ ";" let planCodeLine = "UUID planCode = model.createTrainingPlan(userCode, startDate);" let retrievedLine = "TrainingPlan retrievedPlan = model.getTrainingPlan(planCode);" let assertNotNullLine = "assertNotNull(retrievedPlan);" - let assertEqualsLine = "assertEquals(planCode, retrievedPlan.getCode());" + let assertEqualsLine = assertEquals "planCode" "retrievedPlan.getCode()" return - [ userLine + [ setupLine + , userLine , userCodeLine , dateLine , planCodeLine @@ -304,12 +340,12 @@ getTrainingPlanTemplate = getTrainingPlanExceptionTestGenerator :: Gen [String] getTrainingPlanExceptionTestGenerator = do + let setupLine = "MakeItFit model = new MakeItFit();" let invalidCodeLine = "UUID invalidCode = UUID.randomUUID();" - let assertLine = "assertThrows(IllegalArgumentException.class, () -> { model.getTrainingPlan(invalidCode); });" + let assertLine = assertThrows "IllegalArgumentException" ["model.getTrainingPlan(invalidCode);"] return - [ invalidCodeLine - , assertLine - ] + ([ setupLine + ,invalidCodeLine] ++ assertLine) getTrainingPlanExceptionTemplate :: TestTemplate getTrainingPlanExceptionTemplate = @@ -322,6 +358,7 @@ updateTrainingPlanTestGenerator = do let email = userEmail user date1 <- arbitrary :: Gen MakeItFitDate date2 <- arbitrary :: Gen MakeItFitDate + let setupLine = "MakeItFit model = new MakeItFit();" let userLine = "model.create(" ++ toJavaCreateUserArgs user ++ ");" let userCodeLine = "UUID userCode = model.getUser(" ++ toJavaExpression email ++ ").getCode();" let dateLine1 = "MakeItFitDate startDate = " ++ toJavaExpression date1 ++ ";" @@ -332,7 +369,8 @@ updateTrainingPlanTestGenerator = do let updatedLine = "TrainingPlan updated = model.getTrainingPlan(planCode);" let assertEqualsLine = assertEquals (toJavaExpression date2) "updated.getStartDate()" return - [ userLine + [ setupLine + , userLine , userCodeLine , dateLine1 , planCodeLine @@ -350,17 +388,155 @@ updateTrainingPlanTemplate = updateTrainingPlanExceptionTestGenerator :: Gen [String] updateTrainingPlanExceptionTestGenerator = do date <- arbitrary :: Gen MakeItFitDate + let setupLine = "MakeItFit model = new MakeItFit();" let dateLine = "MakeItFitDate startDate = " ++ toJavaExpression date ++ ";" let fakePlanLine = "TrainingPlan fakePlan = new TrainingPlan(UUID.randomUUID(), startDate);" - let assertLine = "assertThrows(EntityDoesNotExistException.class, () -> { model.updateTrainingPlan(fakePlan); });" + let assertLine = assertThrows "EntityDoesNotExistException" + ["model.updateTrainingPlan(fakePlan);"] return - [ dateLine + ([setupLine + , dateLine , fakePlanLine - , assertLine - ] + ] ++ assertLine) updateTrainingPlanExceptionTemplate :: TestTemplate updateTrainingPlanExceptionTemplate = genToTestTemplate "updateTrainingPlanExceptionTest" updateTrainingPlanExceptionTestGenerator 1 +-- getAllTrainingPlans -> needs a throws Exception +getAllTrainingPlansTestGenerator :: Gen [String] +getAllTrainingPlansTestGenerator = do + user <- arbitrary :: Gen User + let email = userEmail user + date1 <- arbitrary :: Gen MakeItFitDate + date2 <- arbitrary :: Gen MakeItFitDate + let setupLine = "MakeItFit model = new MakeItFit();" + let date2Line = "MakeItFitDate startDate2 =" ++ toJavaExpression date2 ++ ";" + let userLine = "model.create(" ++ toJavaCreateUserArgs user ++ ");" + let userCodeLine = "UUID userCode = model.getUser(" ++ toJavaExpression email ++ ").getCode();" + let dateLine1 = "MakeItFitDate startDate = " ++ toJavaExpression date1 ++ ";" + let createPlan1 = "model.createTrainingPlan(userCode, startDate);" + let createPlan2 = "model.createTrainingPlan(userCode, startDate.plusDays(7));" + let plansLine = "List plans = model.getAllTrainingPlans();" + let assertLine = assertEquals "2" "plans.size()" + return + [ setupLine + , userLine + , userCodeLine + , dateLine1 + , createPlan1 + , createPlan2 + , plansLine + , assertLine + ] + +getAllTrainingPlansTemplate :: TestTemplate +getAllTrainingPlansTemplate = + genToTestTemplate "getAllTrainingPlansTest" getAllTrainingPlansTestGenerator 1 + +-- addActivityToTrainingPlan +addActivityToTrainingPlanTestGenerator :: Gen [String] +addActivityToTrainingPlanTestGenerator = do + user <- arbitrary :: Gen User + let email = userEmail user + date <- arbitrary :: Gen MakeItFitDate + activity <- genActivity "userCode" + let setupLine = "MakeItFit model = new MakeItFit();" + let userLine = "model.create(" ++ toJavaCreateUserArgs user ++ ");" + let userCodeLine = "UUID userCode = model.getUser(" ++ toJavaExpression email ++ ").getCode();" + let dateLine = "MakeItFitDate startDate = " ++ toJavaExpression date ++ ";" + let planCodeLine = "UUID planCode = model.createTrainingPlan(userCode, startDate);" + let activityLine = "Activity activity = " ++ toJavaExpression activity ++ ";" + let assertDoesNotThrowLine = "assertDoesNotThrow(() -> {" ++ + " model.addActivityToTrainingPlan(planCode, activity, 3); });" + let planLine = "TrainingPlan plan = model.getTrainingPlan(planCode);" + let assertTrueLine = assertTrue + "plan.getActivities().stream().anyMatch(a -> a.getItem2().equals(activity))" + return + [ setupLine + , userLine + , userCodeLine + , dateLine + , planCodeLine + , activityLine + , assertDoesNotThrowLine + , planLine + , assertTrueLine + ] + +addActivityToTrainingPlanTemplate :: TestTemplate +addActivityToTrainingPlanTemplate = + genToTestTemplate "addActivityToTrainingPlanTest" addActivityToTrainingPlanTestGenerator 1 + +-- removeActivityFromTrainingPlan +removeActivityFromTrainingPlanTestGenerator :: Gen [String] +removeActivityFromTrainingPlanTestGenerator = do + user <- arbitrary :: Gen User + let email = userEmail user + date <- arbitrary :: Gen MakeItFitDate + activity <- genActivity "userCode" + let setupLine = "MakeItFit model = new MakeItFit();" + let userLine = "model.create(" ++ toJavaCreateUserArgs user ++ ");" + let userCodeLine = "UUID userCode = model.getUser(" ++ toJavaExpression email ++ ").getCode();" + let dateLine = "MakeItFitDate startDate = " ++ toJavaExpression date ++ ";" + let planCodeLine = "UUID planCode = model.createTrainingPlan(userCode, startDate);" + let activityLine = "Activity activity = " ++ toJavaExpression activity ++ ";" + let addActivityLine = "model.addActivityToTrainingPlan(planCode, activity, 2);" + let planLine = "TrainingPlan plan = model.getTrainingPlan(planCode);" + let activityCodeLine = "UUID activityCode = plan.getActivities().get(0).getItem2().getCode();" + let removeActivityLine = "model.removeActivityFromTrainingPlan(planCode, activityCode);" + let updatedLine = "TrainingPlan updated = model.getTrainingPlan(planCode);" + let assertTrueLine = assertTrue ("updated.getActivities().stream().noneMatch(a ->" ++ + " a.getItem2().getCode().equals(activityCode))") + return + [ setupLine + , userLine + , userCodeLine + , dateLine + , planCodeLine + , activityLine + , addActivityLine + , planLine + , activityCodeLine + , removeActivityLine + , updatedLine + , assertTrueLine + ] + +removeActivityFromTrainingPlanTemplate :: TestTemplate +removeActivityFromTrainingPlanTemplate = genToTestTemplate "removeActivityFromTrainingPlanTest" + removeActivityFromTrainingPlanTestGenerator 1 + +-- getTrainingPlansFromUser +getTrainingPlansFromUserTestGenerator :: Gen [String] +getTrainingPlansFromUserTestGenerator = do + user <- arbitrary :: Gen User + let email = userEmail user + date1 <- arbitrary :: Gen MakeItFitDate + date2 <- arbitrary :: Gen MakeItFitDate + let setupLine = "MakeItFit model = new MakeItFit();" + let userLine = "model.create(" ++ toJavaCreateUserArgs user ++ ");" + let userCodeLine = "UUID userCode = model.getUser(" ++ toJavaExpression email ++ ").getCode();" + let dateLine1 = "MakeItFitDate startDate = " ++ toJavaExpression date1 ++ ";" + let createPlan1 = "model.createTrainingPlan(userCode, startDate);" + let createPlan2 = "model.createTrainingPlan(userCode," ++ toJavaExpression date2 ++ ");" + let userPlansLine = "List userPlans = model.getTrainingPlansFromUser(userCode);" + let assertSizeLine = assertEquals "2" "userPlans.size()" + let forLine = "for (TrainingPlan plan : userPlans) {" ++ + "assertEquals(userCode, plan.getUserCode()); }" + return + [ setupLine + , userLine + , userCodeLine + , dateLine1 + , createPlan1 + , createPlan2 + , userPlansLine + , assertSizeLine + , forLine + ] + +getTrainingPlansFromUserTemplate :: TestTemplate +getTrainingPlansFromUserTemplate = + genToTestTemplate "getTrainingPlansFromUserTest" getTrainingPlansFromUserTestGenerator 1 diff --git a/src/testgen/testgen/Generators.hs b/src/testgen/testgen/Generators.hs index 7c07520..a18196a 100644 --- a/src/testgen/testgen/Generators.hs +++ b/src/testgen/testgen/Generators.hs @@ -240,7 +240,8 @@ toJavaCreateUserArgs (Amateur name age gender weight height bpm level address ph , "0" -- valor default para frequency , "\"Amateur\"" ] -toJavaCreateUserArgs (Occasional name age gender weight height bpm level address phone email freq _) = +toJavaCreateUserArgs (Occasional name age gender weight height bpm level address phone email + freq _) = intercalate ", " [ toJavaExpression name , toJavaExpression age , toJavaExpression gender @@ -254,7 +255,8 @@ toJavaCreateUserArgs (Occasional name age gender weight height bpm level address , toJavaExpression freq , "\"Occasional\"" ] -toJavaCreateUserArgs (Professional name age gender weight height bpm level address phone email freq _) = +toJavaCreateUserArgs (Professional name age gender weight height bpm level address phone email + freq _) = intercalate ", " [ toJavaExpression name , toJavaExpression age , toJavaExpression gender diff --git a/src/testgen/testgen/TestClass.hs b/src/testgen/testgen/TestClass.hs index b65c431..8c762c8 100644 --- a/src/testgen/testgen/TestClass.hs +++ b/src/testgen/testgen/TestClass.hs @@ -37,7 +37,11 @@ templates = getTrainingPlanTemplate, getTrainingPlanExceptionTemplate, updateTrainingPlanTemplate, - updateTrainingPlanExceptionTemplate + updateTrainingPlanExceptionTemplate, + getAllTrainingPlansTemplate, + addActivityToTrainingPlanTemplate, + removeActivityFromTrainingPlanTemplate, + getTrainingPlansFromUserTemplate ] generateTests :: IO [String] From 1456e3fe6c31958dc568e499e9734d0e3b8a57ad Mon Sep 17 00:00:00 2001 From: Mariana Date: Wed, 4 Jun 2025 19:31:21 +0100 Subject: [PATCH 10/14] fix some errors and add imports --- src/testgen/testgen/FacadeTemplates.hs | 45 +++++++++++++------------- src/testgen/testgen/Generators.hs | 12 +++---- src/testgen/testgen/TestClass.hs | 9 ++++++ 3 files changed, 38 insertions(+), 28 deletions(-) diff --git a/src/testgen/testgen/FacadeTemplates.hs b/src/testgen/testgen/FacadeTemplates.hs index 1f7893b..e3e7a5b 100644 --- a/src/testgen/testgen/FacadeTemplates.hs +++ b/src/testgen/testgen/FacadeTemplates.hs @@ -102,16 +102,16 @@ getActivitiesFromUserTestGenerator = do let emailNoSpaces = filter (/= ' ') email let userVarName = "user" let setupLine = "MakeItFit model = new MakeItFit();" - let userLine = "model.create(" ++ toJavaCreateUserArgs user ++ ");" + let userLine = "model.createUser(" ++ toJavaCreateUserArgs user ++ ");" let userCodeLine = "UUID userCode = model.getUser(" ++ toJavaExpression email ++ ").getCode();" let activitiesVar = "activities" let activitiesDecl = "List " ++ activitiesVar ++ " = Arrays.asList(" ++ - intercalate ", " (map toJavaExpression (activities)) ++ ");" + intercalate ", " (map toJavaExpression activities) ++ ");" let forLine = "for (Activity a : " ++ activitiesVar ++ ") model.addActivityToUser(" ++ toJavaExpression emailNoSpaces ++ ", a);" - let testLine = assertEquals ("getActivitiesFromUser(\"" ++ emailNoSpaces ++ "\").size()") + let testLine = assertEquals ("model.getActivitiesFromUser(\"" ++ emailNoSpaces ++ "\").size()") (toJavaExpression activitiesLen) - return ([setupLine] ++ [userLine] ++ [";"] ++ [userCodeLine, activitiesDecl, forLine] ++ + return ([setupLine] ++ [userLine] ++ [userCodeLine, activitiesDecl, forLine] ++ [testLine]) getActivitiesFromUserTemplate :: TestTemplate @@ -128,19 +128,21 @@ addActivityToUserTestGenerator = do let emailNoSpaces = filter (/= ' ') email let userVarName = "user" let setupLine = "MakeItFit model = new MakeItFit();" - let userLine = "model.create(" ++ toJavaCreateUserArgs user ++ ");" + let userLine = "model.createUser(" ++ toJavaCreateUserArgs user ++ ");" let userCodeLine = "UUID userCode = model.getUser(" ++ toJavaExpression email ++ ").getCode();" let activitiesVar = "activities" let activitiesDecl = "List " ++ activitiesVar ++ " = Arrays.asList(" ++ intercalate ", " (map toJavaExpression activities) ++ ");" let forLine = "for (Activity a : " ++ activitiesVar ++ ") model.addActivityToUser(" ++ toJavaExpression emailNoSpaces ++ ", a);" - let testLineBefore = assertEquals ("getActivitiesFromUser(\"" ++ emailNoSpaces ++ "\").size()") + let testLineBefore = assertEquals + ("model.getActivitiesFromUser(\"" ++ emailNoSpaces ++ "\").size()") (toJavaExpression activitiesLen) activityToAdd <- genActivity "userCode" let activityAdd = "model.addActivityToUser(" ++ toJavaExpression emailNoSpaces ++ ", " ++ toJavaExpression activityToAdd ++ ");" - let testLineAfter = assertEquals ("getActivitiesFromUser(\"" ++ emailNoSpaces ++ "\").size()") + let testLineAfter = assertEquals + ("model.getActivitiesFromUser(\"" ++ emailNoSpaces ++ "\").size()") (toJavaExpression (activitiesLen + 1)) return ([setupLine, userLine] ++ [";"] ++ [userCodeLine, activitiesDecl, forLine, testLineBefore, activityAdd, testLineAfter]) @@ -158,7 +160,7 @@ removeActivityFromUserTestGenerator = do let activities = map (userCodeActivity "userCode") (userActivities user) let emailNoSpaces = filter (/= ' ') email let setupLine = "MakeItFit model = new MakeItFit();" - let userLine = "model.create(" ++ toJavaCreateUserArgs user ++ ");" + let userLine = "model.createUser(" ++ toJavaCreateUserArgs user ++ ");" let userCodeLine = "UUID userCode = model.getUser(" ++ toJavaExpression email ++ ").getCode();" let activitiesVar = "activities" let activitiesDecl = "List " ++ activitiesVar ++ " = Arrays.asList(" ++ @@ -171,7 +173,8 @@ removeActivityFromUserTestGenerator = do ".add(a.getCode());" let forRemoveLine = "for (UUID activityId : " ++ activityIdsVar ++ ") model.removeActivityFromUser(" ++ toJavaExpression emailNoSpaces ++ ", activityId);" - let testLine = assertEquals ("getActivitiesFromUser(\"" ++ emailNoSpaces ++ "\").size()") "0" + let testLine = assertEquals ("model.getActivitiesFromUser(\"" ++ emailNoSpaces ++ "\").size()") + "0" return [ setupLine , userLine @@ -195,7 +198,7 @@ createTrainingPlanTestGenerator = do let email = userEmail user date <- arbitrary :: Gen MakeItFitDate let setupLine = "MakeItFit model = new MakeItFit();" - let userLine = "model.create(" ++ toJavaCreateUserArgs user ++ ");" + let userLine = "model.createUser(" ++ toJavaCreateUserArgs user ++ ");" let userCodeLine = "UUID userCode = model.getUser(" ++ toJavaExpression email ++ ").getCode();" let dateLine = "MakeItFitDate startDate = " ++ toJavaExpression date ++ ";" let planCodeLine = "UUID planCode = model.createTrainingPlan(userCode, startDate);" @@ -219,16 +222,14 @@ createTrainingPlanExceptionTestGenerator = do let email = userEmail user date <- arbitrary :: Gen MakeItFitDate let setupLine = "MakeItFit model = new MakeItFit();" - let userLine = "model.create(" ++ toJavaCreateUserArgs user ++ ");" + let userLine = "model.createUser(" ++ toJavaCreateUserArgs user ++ ");" let userCodeLine = "UUID userCode = model.getUser(" ++ toJavaExpression email ++ ").getCode();" - let planCodeLine = "UUID planCode = model.createTrainingPlan(userCode, null);" let assertThrowsLines = assertThrows "IllegalArgumentException" ["model.createTrainingPlan(userCode, null);"] return ([ setupLine , userLine , userCodeLine - , planCodeLine ] ++ assertThrowsLines) createTrainingPlanExceptionTemplate :: TestTemplate @@ -242,7 +243,7 @@ constructTrainingPlanTestGenerator = do let email = userEmail user date <- arbitrary :: Gen MakeItFitDate let setupLine = "MakeItFit model = new MakeItFit();" - let userLine = "model.create(" ++ toJavaCreateUserArgs user ++ ");" + let userLine = "model.createUser(" ++ toJavaCreateUserArgs user ++ ");" let userCodeLine = "UUID userCode = model.getUser(" ++ toJavaExpression email ++ ").getCode();" let dateLine = "MakeItFitDate startDate = " ++ toJavaExpression date ++ ";" let planCodeLine = "UUID planCode = model.createTrainingPlan(userCode, startDate);" @@ -270,7 +271,7 @@ constructTrainingPlanExceptionTestGenerator = do let fakeUserCodeLine = "UUID fakeUserCode = UUID.randomUUID();" let dateLine = "MakeItFitDate startDate = " ++ toJavaExpression date ++ ";" let fakePlanLine = "TrainingPlan fakePlan = new TrainingPlan(fakeUserCode, startDate);" - let assertLine = assertThrows "(EntityDoesNotExistException" + let assertLine = assertThrows "EntityDoesNotExistException" ["model.constructTrainingPlanByObjectives(fakePlan, true, 2, 3, 4, 500);"] return ([setupLine @@ -290,7 +291,7 @@ removeTrainingPlanTestGenerator = do let email = userEmail user date <- arbitrary :: Gen MakeItFitDate let setupLine = "MakeItFit model = new MakeItFit();" - let userLine = "model.create(" ++ toJavaCreateUserArgs user ++ ");" + let userLine = "model.createUser(" ++ toJavaCreateUserArgs user ++ ");" let userCodeLine = "UUID userCode = model.getUser(" ++ toJavaExpression email ++ ").getCode();" let dateLine = "MakeItFitDate startDate = " ++ toJavaExpression date ++ ";" let planCodeLine = "UUID planCode = model.createTrainingPlan(userCode, startDate);" @@ -316,7 +317,7 @@ getTrainingPlanTestGenerator = do let email = userEmail user date <- arbitrary :: Gen MakeItFitDate let setupLine = "MakeItFit model = new MakeItFit();" - let userLine = "model.create(" ++ toJavaCreateUserArgs user ++ ");" + let userLine = "model.createUser(" ++ toJavaCreateUserArgs user ++ ");" let userCodeLine = "UUID userCode = model.getUser(" ++ toJavaExpression email ++ ").getCode();" let dateLine = "MakeItFitDate startDate = " ++ toJavaExpression date ++ ";" let planCodeLine = "UUID planCode = model.createTrainingPlan(userCode, startDate);" @@ -359,7 +360,7 @@ updateTrainingPlanTestGenerator = do date1 <- arbitrary :: Gen MakeItFitDate date2 <- arbitrary :: Gen MakeItFitDate let setupLine = "MakeItFit model = new MakeItFit();" - let userLine = "model.create(" ++ toJavaCreateUserArgs user ++ ");" + let userLine = "model.createUser(" ++ toJavaCreateUserArgs user ++ ");" let userCodeLine = "UUID userCode = model.getUser(" ++ toJavaExpression email ++ ").getCode();" let dateLine1 = "MakeItFitDate startDate = " ++ toJavaExpression date1 ++ ";" let planCodeLine = "UUID planCode = model.createTrainingPlan(userCode, startDate);" @@ -412,7 +413,7 @@ getAllTrainingPlansTestGenerator = do date2 <- arbitrary :: Gen MakeItFitDate let setupLine = "MakeItFit model = new MakeItFit();" let date2Line = "MakeItFitDate startDate2 =" ++ toJavaExpression date2 ++ ";" - let userLine = "model.create(" ++ toJavaCreateUserArgs user ++ ");" + let userLine = "model.createUser(" ++ toJavaCreateUserArgs user ++ ");" let userCodeLine = "UUID userCode = model.getUser(" ++ toJavaExpression email ++ ").getCode();" let dateLine1 = "MakeItFitDate startDate = " ++ toJavaExpression date1 ++ ";" let createPlan1 = "model.createTrainingPlan(userCode, startDate);" @@ -442,7 +443,7 @@ addActivityToTrainingPlanTestGenerator = do date <- arbitrary :: Gen MakeItFitDate activity <- genActivity "userCode" let setupLine = "MakeItFit model = new MakeItFit();" - let userLine = "model.create(" ++ toJavaCreateUserArgs user ++ ");" + let userLine = "model.createUser(" ++ toJavaCreateUserArgs user ++ ");" let userCodeLine = "UUID userCode = model.getUser(" ++ toJavaExpression email ++ ").getCode();" let dateLine = "MakeItFitDate startDate = " ++ toJavaExpression date ++ ";" let planCodeLine = "UUID planCode = model.createTrainingPlan(userCode, startDate);" @@ -476,7 +477,7 @@ removeActivityFromTrainingPlanTestGenerator = do date <- arbitrary :: Gen MakeItFitDate activity <- genActivity "userCode" let setupLine = "MakeItFit model = new MakeItFit();" - let userLine = "model.create(" ++ toJavaCreateUserArgs user ++ ");" + let userLine = "model.createUser(" ++ toJavaCreateUserArgs user ++ ");" let userCodeLine = "UUID userCode = model.getUser(" ++ toJavaExpression email ++ ").getCode();" let dateLine = "MakeItFitDate startDate = " ++ toJavaExpression date ++ ";" let planCodeLine = "UUID planCode = model.createTrainingPlan(userCode, startDate);" @@ -515,7 +516,7 @@ getTrainingPlansFromUserTestGenerator = do date1 <- arbitrary :: Gen MakeItFitDate date2 <- arbitrary :: Gen MakeItFitDate let setupLine = "MakeItFit model = new MakeItFit();" - let userLine = "model.create(" ++ toJavaCreateUserArgs user ++ ");" + let userLine = "model.createUser(" ++ toJavaCreateUserArgs user ++ ");" let userCodeLine = "UUID userCode = model.getUser(" ++ toJavaExpression email ++ ").getCode();" let dateLine1 = "MakeItFitDate startDate = " ++ toJavaExpression date1 ++ ";" let createPlan1 = "model.createTrainingPlan(userCode, startDate);" diff --git a/src/testgen/testgen/Generators.hs b/src/testgen/testgen/Generators.hs index a18196a..a2b5aae 100644 --- a/src/testgen/testgen/Generators.hs +++ b/src/testgen/testgen/Generators.hs @@ -48,7 +48,7 @@ data User = String -- ^ User's name Int -- ^ User's age Gender -- ^ User's gender - Float -- ^ User's weight + Int -- ^ User's weight Int -- ^ User's height Int -- ^ User's BPM Int -- ^ User's level @@ -61,7 +61,7 @@ data User = String -- ^ User's name Int -- ^ User's age Gender -- ^ User's gender - Float -- ^ User's weight + Int -- ^ User's weight Int -- ^ User's height Int -- ^ User's BPM Int -- ^ User's level @@ -75,7 +75,7 @@ data User = String -- ^ User's name Int -- ^ User's age Gender -- ^ User's gender - Float -- ^ User's weight + Int -- ^ User's weight Int -- ^ User's height Int -- ^ User's BPM Int -- ^ User's level @@ -144,7 +144,7 @@ instance Arbitrary User where name <- genUserName age <- choose (18, 80) gender <- arbitrary :: Gen Gender - weight <- elements [50.0..100.00] -- NOTE: elements is used to avoid fractional numbers + weight <- elements [50..100] -- NOTE: elements is used to avoid fractional numbers height <- choose (150, 195) bpm <- choose (60, 100) level <- choose (1, 10) @@ -384,7 +384,7 @@ genActivity userCode = do series <- choose (1, 10) return $ PushUp userCode date duration designation name repetitions series "Running" -> do - distance <- choose (1.0, 45.0) + distance <- choose (1.0, 20.0) speed <- choose (6.0, 15.0) return $ Running userCode date duration designation name distance speed "Trail" -> do @@ -397,7 +397,7 @@ genActivity userCode = do "WeightSquat" -> do repetitions <- choose (5, 100) series <- choose (1, 10) - weight <- choose (10.0, 200.0) + weight <- choose (10.0, 20.0) return $ WeightSquat userCode date duration designation name repetitions series weight instance JavaData Activity where diff --git a/src/testgen/testgen/TestClass.hs b/src/testgen/testgen/TestClass.hs index 8c762c8..15be59f 100644 --- a/src/testgen/testgen/TestClass.hs +++ b/src/testgen/testgen/TestClass.hs @@ -62,6 +62,15 @@ generateUnformattedTestClass = do , "import static org.junit.jupiter.api.Assertions.*;" , "" , "import MakeItFit.users.User;" + , "import MakeItFit.users.Gender;" + , "import java.util.UUID;" + , "import MakeItFit.activities.Activity;" + , "import MakeItFit.activities.implementation.*;" + , "import MakeItFit.utils.MakeItFitDate;" + , "import MakeItFit.trainingPlan.TrainingPlan;" + , "import static org.junit.Assert.assertThrows;" + , "import MakeItFit.exceptions.*;" + , "" , "public class MakeItFitTest {" ] From 894b911edad8a6f0a8dc26dc729a13481ee4c4c5 Mon Sep 17 00:00:00 2001 From: Mariana <108686064+Mariana-rc01@users.noreply.github.com> Date: Wed, 4 Jun 2025 20:11:06 +0100 Subject: [PATCH 11/14] Update FacadeTemplates.hs --- src/testgen/testgen/FacadeTemplates.hs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/testgen/testgen/FacadeTemplates.hs b/src/testgen/testgen/FacadeTemplates.hs index e3e7a5b..9fb80f4 100644 --- a/src/testgen/testgen/FacadeTemplates.hs +++ b/src/testgen/testgen/FacadeTemplates.hs @@ -76,7 +76,7 @@ emailTestGenerator = do emailTemplate :: TestTemplate emailTemplate = TestTemplate "validEmail" emailTestGenerator 1 --- getActivitiesFromUser -> needs a throws Exception +-- getActivitiesFromUser userEmail :: User -> String userEmail (Amateur _ _ _ _ _ _ _ _ _ email _) = email userEmail (Occasional _ _ _ _ _ _ _ _ _ email _ _) = email @@ -118,7 +118,7 @@ getActivitiesFromUserTemplate :: TestTemplate getActivitiesFromUserTemplate = genToTestTemplate "getActivitiesFromUserTest" getActivitiesFromUserTestGenerator 1 --- addActivityToUser -> needs a throws Exception +-- addActivityToUser addActivityToUserTestGenerator :: Gen [String] addActivityToUserTestGenerator = do user <- arbitrary :: Gen User @@ -151,7 +151,7 @@ addActivityToUserTemplate :: TestTemplate addActivityToUserTemplate = genToTestTemplate "addActivityToUserTest" addActivityToUserTestGenerator 1 --- removeActivityFromUser -> needs a throws Exception +-- removeActivityFromUser removeActivityFromUserTestGenerator :: Gen [String] removeActivityFromUserTestGenerator = do user <- arbitrary :: Gen User @@ -191,7 +191,7 @@ removeActivityFromUserTemplate :: TestTemplate removeActivityFromUserTemplate = genToTestTemplate "removeActivityFromUserTest" removeActivityFromUserTestGenerator 1 --- createTrainingPlan -> needs a throws Exception +-- createTrainingPlan createTrainingPlanTestGenerator :: Gen [String] createTrainingPlanTestGenerator = do user <- arbitrary :: Gen User @@ -236,7 +236,7 @@ createTrainingPlanExceptionTemplate :: TestTemplate createTrainingPlanExceptionTemplate = genToTestTemplate "createTrainingPlanExceptionTest" createTrainingPlanExceptionTestGenerator 1 --- ConstructTrainingPlan -> needs a throws Exception +-- ConstructTrainingPlan constructTrainingPlanTestGenerator :: Gen [String] constructTrainingPlanTestGenerator = do user <- arbitrary :: Gen User @@ -310,7 +310,7 @@ removeTrainingPlanTemplate :: TestTemplate removeTrainingPlanTemplate = genToTestTemplate "removeTrainingPlanTest" removeTrainingPlanTestGenerator 1 --- getTrainingPlan -> needs a throws Exception +-- getTrainingPlan getTrainingPlanTestGenerator :: Gen [String] getTrainingPlanTestGenerator = do user <- arbitrary :: Gen User @@ -352,7 +352,7 @@ getTrainingPlanExceptionTemplate :: TestTemplate getTrainingPlanExceptionTemplate = genToTestTemplate "getTrainingPlanExceptionTest" getTrainingPlanExceptionTestGenerator 1 --- updateTrainingPlan -> needs a throws Exception +-- updateTrainingPlan updateTrainingPlanTestGenerator :: Gen [String] updateTrainingPlanTestGenerator = do user <- arbitrary :: Gen User @@ -404,7 +404,7 @@ updateTrainingPlanExceptionTemplate :: TestTemplate updateTrainingPlanExceptionTemplate = genToTestTemplate "updateTrainingPlanExceptionTest" updateTrainingPlanExceptionTestGenerator 1 --- getAllTrainingPlans -> needs a throws Exception +-- getAllTrainingPlans getAllTrainingPlansTestGenerator :: Gen [String] getAllTrainingPlansTestGenerator = do user <- arbitrary :: Gen User From ec8167ba85bce743a726777160eec3de8b34db4f Mon Sep 17 00:00:00 2001 From: Mariana Date: Wed, 4 Jun 2025 20:30:32 +0100 Subject: [PATCH 12/14] fix format --- .../java/MakeItFit/MakeItFitTest.java | 18 +++++++++--------- .../activities/implementation/TrailTest.java | 6 +++--- .../queries/HowManyAltimetryDoneTest.java | 8 ++++---- .../queries/MostDemandingTrainingPlanTest.java | 10 +++++----- .../queries/MostDoneActivityTest.java | 6 +++--- .../MakeItFit/queries/QueriesManagerTest.java | 8 ++++---- .../queries/WhoBurnsMoreCaloriesTest.java | 10 +++++----- .../java/MakeItFit/users/UserTest.java | 8 ++++---- .../users/types/ProfessionalTest.java | 7 +++---- src/testgen/testgen/FacadeTemplates.hs | 16 ++++++++-------- .../activities/types/RepetitionsTest.java | 8 ++++---- 11 files changed, 52 insertions(+), 53 deletions(-) diff --git a/src/aiunittests/java/MakeItFit/MakeItFitTest.java b/src/aiunittests/java/MakeItFit/MakeItFitTest.java index 7d62b92..643d4fa 100644 --- a/src/aiunittests/java/MakeItFit/MakeItFitTest.java +++ b/src/aiunittests/java/MakeItFit/MakeItFitTest.java @@ -4,15 +4,6 @@ import java.util.List; import java.util.UUID; -import org.junit.After; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; -import org.junit.Before; -import org.junit.Test; - import MakeItFit.activities.Activity; import MakeItFit.activities.implementation.PushUp; import MakeItFit.exceptions.EntityDoesNotExistException; @@ -21,6 +12,15 @@ import MakeItFit.users.Gender; import MakeItFit.users.User; import MakeItFit.utils.MakeItFitDate; +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; public class MakeItFitTest { diff --git a/src/aiunittests/java/MakeItFit/activities/implementation/TrailTest.java b/src/aiunittests/java/MakeItFit/activities/implementation/TrailTest.java index 2178341..6d68841 100644 --- a/src/aiunittests/java/MakeItFit/activities/implementation/TrailTest.java +++ b/src/aiunittests/java/MakeItFit/activities/implementation/TrailTest.java @@ -2,14 +2,14 @@ import java.util.UUID; +import MakeItFit.utils.MakeItFitDate; +import org.junit.jupiter.api.Test; + import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertNotSame; import static org.junit.jupiter.api.Assertions.assertTrue; -import org.junit.jupiter.api.Test; - -import MakeItFit.utils.MakeItFitDate; public class TrailTest { diff --git a/src/aiunittests/java/MakeItFit/queries/HowManyAltimetryDoneTest.java b/src/aiunittests/java/MakeItFit/queries/HowManyAltimetryDoneTest.java index e4d9fe2..862ba8a 100644 --- a/src/aiunittests/java/MakeItFit/queries/HowManyAltimetryDoneTest.java +++ b/src/aiunittests/java/MakeItFit/queries/HowManyAltimetryDoneTest.java @@ -3,10 +3,6 @@ import java.util.ArrayList; import java.util.UUID; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertThrows; -import org.junit.jupiter.api.Test; - import MakeItFit.activities.Activity; import MakeItFit.activities.implementation.Trail; import MakeItFit.users.Gender; @@ -14,6 +10,10 @@ import MakeItFit.users.UserManager; import MakeItFit.users.types.Amateur; import MakeItFit.utils.MakeItFitDate; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertThrows; public class HowManyAltimetryDoneTest { diff --git a/src/aiunittests/java/MakeItFit/queries/MostDemandingTrainingPlanTest.java b/src/aiunittests/java/MakeItFit/queries/MostDemandingTrainingPlanTest.java index be913b7..0bbeee0 100644 --- a/src/aiunittests/java/MakeItFit/queries/MostDemandingTrainingPlanTest.java +++ b/src/aiunittests/java/MakeItFit/queries/MostDemandingTrainingPlanTest.java @@ -4,10 +4,6 @@ import java.util.List; import java.util.UUID; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNull; -import org.junit.jupiter.api.Test; - import MakeItFit.activities.Activity; import MakeItFit.activities.implementation.Trail; import MakeItFit.trainingPlan.TrainingPlan; @@ -18,6 +14,10 @@ import MakeItFit.users.types.Amateur; import MakeItFit.utils.MakeItFitDate; import MakeItFit.utils.MyTuple; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; public class MostDemandingTrainingPlanTest { @@ -51,7 +51,7 @@ void testExecuteQuery() { 800.0, 600.0, Trail.TRAIL_TYPE_HARD); - User user2 = new Amateur("José Fernandes", + User user2 = new Amateur("José Fernandes", 45, Gender.Male, 75, diff --git a/src/aiunittests/java/MakeItFit/queries/MostDoneActivityTest.java b/src/aiunittests/java/MakeItFit/queries/MostDoneActivityTest.java index df3b5c9..04cead8 100644 --- a/src/aiunittests/java/MakeItFit/queries/MostDoneActivityTest.java +++ b/src/aiunittests/java/MakeItFit/queries/MostDoneActivityTest.java @@ -3,15 +3,15 @@ import java.util.ArrayList; import java.util.List; -import static org.junit.jupiter.api.Assertions.assertEquals; -import org.junit.jupiter.api.Test; - import MakeItFit.activities.Activity; import MakeItFit.activities.implementation.PushUp; import MakeItFit.users.Gender; import MakeItFit.users.User; import MakeItFit.users.UserManager; import MakeItFit.users.types.Amateur; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; public class MostDoneActivityTest { diff --git a/src/aiunittests/java/MakeItFit/queries/QueriesManagerTest.java b/src/aiunittests/java/MakeItFit/queries/QueriesManagerTest.java index 93a5a88..910fd7b 100644 --- a/src/aiunittests/java/MakeItFit/queries/QueriesManagerTest.java +++ b/src/aiunittests/java/MakeItFit/queries/QueriesManagerTest.java @@ -2,10 +2,6 @@ import java.util.UUID; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNull; -import org.junit.jupiter.api.Test; - import MakeItFit.activities.Activity; import MakeItFit.activities.implementation.Trail; import MakeItFit.trainingPlan.TrainingPlan; @@ -15,6 +11,10 @@ import MakeItFit.users.UserManager; import MakeItFit.users.types.Amateur; import MakeItFit.utils.MakeItFitDate; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; public class QueriesManagerTest { diff --git a/src/aiunittests/java/MakeItFit/queries/WhoBurnsMoreCaloriesTest.java b/src/aiunittests/java/MakeItFit/queries/WhoBurnsMoreCaloriesTest.java index 50a4aa5..553a510 100644 --- a/src/aiunittests/java/MakeItFit/queries/WhoBurnsMoreCaloriesTest.java +++ b/src/aiunittests/java/MakeItFit/queries/WhoBurnsMoreCaloriesTest.java @@ -2,11 +2,6 @@ import java.util.UUID; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNull; -import static org.junit.jupiter.api.Assertions.assertThrows; -import org.junit.jupiter.api.Test; - import MakeItFit.activities.Activity; import MakeItFit.activities.implementation.PushUp; import MakeItFit.users.Gender; @@ -14,6 +9,11 @@ import MakeItFit.users.UserManager; import MakeItFit.users.types.Amateur; import MakeItFit.utils.MakeItFitDate; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertThrows; public class WhoBurnsMoreCaloriesTest { diff --git a/src/aiunittests/java/MakeItFit/users/UserTest.java b/src/aiunittests/java/MakeItFit/users/UserTest.java index f0215de..a587779 100644 --- a/src/aiunittests/java/MakeItFit/users/UserTest.java +++ b/src/aiunittests/java/MakeItFit/users/UserTest.java @@ -4,14 +4,14 @@ import java.util.List; import java.util.UUID; +import MakeItFit.activities.Activity; +import MakeItFit.activities.implementation.PushUp; +import org.junit.jupiter.api.Test; + import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertTrue; -import org.junit.jupiter.api.Test; - -import MakeItFit.activities.Activity; -import MakeItFit.activities.implementation.PushUp; class TestUser extends User { diff --git a/src/aiunittests/java/MakeItFit/users/types/ProfessionalTest.java b/src/aiunittests/java/MakeItFit/users/types/ProfessionalTest.java index 3f86607..bdf3902 100644 --- a/src/aiunittests/java/MakeItFit/users/types/ProfessionalTest.java +++ b/src/aiunittests/java/MakeItFit/users/types/ProfessionalTest.java @@ -1,10 +1,10 @@ package MakeItFit.users.types; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertTrue; +import MakeItFit.users.Gender; import org.junit.jupiter.api.Test; -import MakeItFit.users.Gender; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; class ProfessionalTest { @@ -84,7 +84,6 @@ void testSpecializationManagement() { // Test setting specialization pro.setSpecialization("Swimming"); assertEquals("Swimming", pro.getSpecialization()); - } @Test diff --git a/src/testgen/testgen/FacadeTemplates.hs b/src/testgen/testgen/FacadeTemplates.hs index 9fb80f4..8d38933 100644 --- a/src/testgen/testgen/FacadeTemplates.hs +++ b/src/testgen/testgen/FacadeTemplates.hs @@ -76,7 +76,7 @@ emailTestGenerator = do emailTemplate :: TestTemplate emailTemplate = TestTemplate "validEmail" emailTestGenerator 1 --- getActivitiesFromUser +-- getActivitiesFromUserdate userEmail :: User -> String userEmail (Amateur _ _ _ _ _ _ _ _ _ email _) = email userEmail (Occasional _ _ _ _ _ _ _ _ _ email _ _) = email @@ -118,7 +118,7 @@ getActivitiesFromUserTemplate :: TestTemplate getActivitiesFromUserTemplate = genToTestTemplate "getActivitiesFromUserTest" getActivitiesFromUserTestGenerator 1 --- addActivityToUser +-- addActivityToUserdate addActivityToUserTestGenerator :: Gen [String] addActivityToUserTestGenerator = do user <- arbitrary :: Gen User @@ -151,7 +151,7 @@ addActivityToUserTemplate :: TestTemplate addActivityToUserTemplate = genToTestTemplate "addActivityToUserTest" addActivityToUserTestGenerator 1 --- removeActivityFromUser +-- removeActivityFromUserdate removeActivityFromUserTestGenerator :: Gen [String] removeActivityFromUserTestGenerator = do user <- arbitrary :: Gen User @@ -191,7 +191,7 @@ removeActivityFromUserTemplate :: TestTemplate removeActivityFromUserTemplate = genToTestTemplate "removeActivityFromUserTest" removeActivityFromUserTestGenerator 1 --- createTrainingPlan +-- createTrainingPlandate createTrainingPlanTestGenerator :: Gen [String] createTrainingPlanTestGenerator = do user <- arbitrary :: Gen User @@ -236,7 +236,7 @@ createTrainingPlanExceptionTemplate :: TestTemplate createTrainingPlanExceptionTemplate = genToTestTemplate "createTrainingPlanExceptionTest" createTrainingPlanExceptionTestGenerator 1 --- ConstructTrainingPlan +-- ConstructTrainingPlandate constructTrainingPlanTestGenerator :: Gen [String] constructTrainingPlanTestGenerator = do user <- arbitrary :: Gen User @@ -310,7 +310,7 @@ removeTrainingPlanTemplate :: TestTemplate removeTrainingPlanTemplate = genToTestTemplate "removeTrainingPlanTest" removeTrainingPlanTestGenerator 1 --- getTrainingPlan +-- getTrainingPlandate getTrainingPlanTestGenerator :: Gen [String] getTrainingPlanTestGenerator = do user <- arbitrary :: Gen User @@ -352,7 +352,7 @@ getTrainingPlanExceptionTemplate :: TestTemplate getTrainingPlanExceptionTemplate = genToTestTemplate "getTrainingPlanExceptionTest" getTrainingPlanExceptionTestGenerator 1 --- updateTrainingPlan +-- updateTrainingPlandate updateTrainingPlanTestGenerator :: Gen [String] updateTrainingPlanTestGenerator = do user <- arbitrary :: Gen User @@ -404,7 +404,7 @@ updateTrainingPlanExceptionTemplate :: TestTemplate updateTrainingPlanExceptionTemplate = genToTestTemplate "updateTrainingPlanExceptionTest" updateTrainingPlanExceptionTestGenerator 1 --- getAllTrainingPlans +-- getAllTrainingPlansdate getAllTrainingPlansTestGenerator :: Gen [String] getAllTrainingPlansTestGenerator = do user <- arbitrary :: Gen User diff --git a/src/unittests/java/MakeItFit/activities/types/RepetitionsTest.java b/src/unittests/java/MakeItFit/activities/types/RepetitionsTest.java index e0947b0..5961707 100644 --- a/src/unittests/java/MakeItFit/activities/types/RepetitionsTest.java +++ b/src/unittests/java/MakeItFit/activities/types/RepetitionsTest.java @@ -2,14 +2,14 @@ import java.util.UUID; +import MakeItFit.utils.MakeItFitDate; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertNotSame; import static org.junit.jupiter.api.Assertions.assertTrue; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import MakeItFit.utils.MakeItFitDate; public class RepetitionsTest { private TestRepetitions activity; From 99a80140295aa77f2daf2189a984d62a98aab6a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Lopes?= Date: Wed, 4 Jun 2025 21:49:36 +0100 Subject: [PATCH 13/14] unit tests generators --- src/testgen/testgen/FacadeTemplates.hs | 283 +++++++++++++++++++++++-- src/testgen/testgen/Generators.hs | 8 +- src/testgen/testgen/TestClass.hs | 11 + 3 files changed, 284 insertions(+), 18 deletions(-) diff --git a/src/testgen/testgen/FacadeTemplates.hs b/src/testgen/testgen/FacadeTemplates.hs index 9fb80f4..70c7f65 100644 --- a/src/testgen/testgen/FacadeTemplates.hs +++ b/src/testgen/testgen/FacadeTemplates.hs @@ -15,6 +15,16 @@ module FacadeTemplates ( equalityTemplate, emailTemplate, + createAndGetUserTemplate, + removeUserByEmailTemplate, + removeUserByUUIDTemplate, + removeUserInvalidTypeTemplate, + getUserInvalidTypeTemplate, + removeNonExistentUserTemplate, + updateUserTemplate, + updateEmailTemplate, + duplicateUserTemplate, + getAllUsersTemplate, getActivitiesFromUserTemplate, addActivityToUserTemplate, removeActivityFromUserTemplate, @@ -30,13 +40,13 @@ module FacadeTemplates ( getAllTrainingPlansTemplate, addActivityToTrainingPlanTemplate, removeActivityFromTrainingPlanTemplate, - getTrainingPlansFromUserTemplate + getTrainingPlansFromUserTemplate, ) where import Java (assertEquals, assertTrue, runJava, toJavaExpression, toJavaExpressionList, JavaData (toJavaExpression), assertThrows) import TestTemplate (TestTemplate(..), genToTestTemplate) -import Test.QuickCheck (Gen, arbitrary, elements, generate, listOf, Arbitrary (arbitrary)) +import Test.QuickCheck (Gen, arbitrary, elements, generate, choose, listOf, Arbitrary (arbitrary), suchThat) import Generators import Data.List (intercalate) import GHC.Generics (Associativity) @@ -54,12 +64,6 @@ equalityTestGenerator = do equalityTemplate :: TestTemplate equalityTemplate = genToTestTemplate "equals" equalityTestGenerator 3 -genEmail :: Gen String -genEmail = do - before <- listOf $ elements (['a'..'z'] ++ ['A'..'Z'] ++ ['0'..'9']) - after <- listOf $ elements (['a'..'z'] ++ ['A'..'Z'] ++ ['0'..'9']) - return $ before ++ "@" ++ after ++ ".com" - emailTestGenerator :: IO [String] emailTestGenerator = do email <- generate $ genEmail @@ -76,7 +80,7 @@ emailTestGenerator = do emailTemplate :: TestTemplate emailTemplate = TestTemplate "validEmail" emailTestGenerator 1 --- getActivitiesFromUser +-- getActivitiesFromUser userEmail :: User -> String userEmail (Amateur _ _ _ _ _ _ _ _ _ email _) = email userEmail (Occasional _ _ _ _ _ _ _ _ _ email _ _) = email @@ -93,6 +97,253 @@ userCodeActivity userCode (Running _ a b c d e f) = Running userCode a b c d e f userCodeActivity userCode (Trail _ a b c d e f g h) = Trail userCode a b c d e f g h userCodeActivity userCode (WeightSquat _ a b c d e f g) = WeightSquat userCode a b c d e f g +userName :: User -> String +userName (Amateur name _ _ _ _ _ _ _ _ _ _) = name +userName (Occasional name _ _ _ _ _ _ _ _ _ _ _) = name +userName (Professional name _ _ _ _ _ _ _ _ _ _ _) = name + +userAge :: User -> Int +userAge (Amateur _ age _ _ _ _ _ _ _ _ _) = age +userAge (Occasional _ age _ _ _ _ _ _ _ _ _ _) = age +userAge (Professional _ age _ _ _ _ _ _ _ _ _ _) = age + +-- testCreateAndGetUser: +testCreateAndGetUserGenerator :: Gen [String] +testCreateAndGetUserGenerator = do + user <- arbitrary :: Gen User + let name = userName user + age = userAge user + email = userEmail user + setupLine = "MakeItFit model = new MakeItFit();" + createUserLine = "model.createUser(" ++ toJavaCreateUserArgs user ++ ");" + existsLine = "assertTrue(model.existsUserWithEmail(" ++ toJavaExpression email ++ "));" + getUserLine = "User user = model.getUser(" ++ toJavaExpression email ++ ");" + assertNameLine = "assertEquals(" ++ toJavaExpression name ++ ", user.getName());" + assertAgeLine = "assertEquals(" ++ show age ++ ", user.getAge());" + return + [ setupLine + , createUserLine + , existsLine + , getUserLine + , assertNameLine + , assertAgeLine + ] + +createAndGetUserTemplate :: TestTemplate +createAndGetUserTemplate = + genToTestTemplate "testCreateAndGetUser" testCreateAndGetUserGenerator 1 + +-- testRemoveUserByEmail +testRemoveUserByEmailGenerator :: Gen [String] +testRemoveUserByEmailGenerator = do + user <- arbitrary :: Gen User + let email = userEmail user + setupLine = "MakeItFit model = new MakeItFit();" + createLine = "model.createUser(" ++ toJavaCreateUserArgs user ++ ");" + removeLine = "model.removeUser(" ++ toJavaExpression email ++ ");" + assertLine = "assertFalse(model.existsUserWithEmail(" ++ toJavaExpression email ++ "));" + return [ setupLine, createLine, removeLine, assertLine ] + +removeUserByEmailTemplate :: TestTemplate +removeUserByEmailTemplate = + genToTestTemplate "testRemoveUserByEmail" testRemoveUserByEmailGenerator 1 + +-- testRemoveUserByUUID +testRemoveUserByUUIDGenerator :: Gen [String] +testRemoveUserByUUIDGenerator = do + user <- arbitrary :: Gen User + let email = userEmail user + createArgs = toJavaCreateUserArgs user + setupLine = "MakeItFit model = new MakeItFit();" + createLine = "model.createUser(" ++ toJavaCreateUserArgs user ++ ");" + getIdLine = "UUID id = model.getUser(" ++ toJavaExpression email ++ ").getCode();" + removeLine = "model.removeUser(id);" + assertLine = "assertFalse(model.existsUserWithEmail(" ++ toJavaExpression email ++ "));" + return [ setupLine, createLine, getIdLine, removeLine, assertLine ] + +removeUserByUUIDTemplate :: TestTemplate +removeUserByUUIDTemplate = + genToTestTemplate "testRemoveUserByUUID" testRemoveUserByUUIDGenerator 1 + +-- TODO testRemoveUserInvalidType +testRemoveUserInvalidTypeGenerator :: Gen [String] +testRemoveUserInvalidTypeGenerator = do + let setupLine = "MakeItFit model = new MakeItFit();" + assertLine = "assertThrows(InvalidTypeException.class, () -> model.removeUser(123));" + return [ setupLine, assertLine ] + +removeUserInvalidTypeTemplate :: TestTemplate +removeUserInvalidTypeTemplate = + genToTestTemplate "testRemoveUserInvalidType" testRemoveUserInvalidTypeGenerator 1 + +-- TODO testGetUserInvalidType +testGetUserInvalidTypeGenerator :: Gen [String] +testGetUserInvalidTypeGenerator = do + let setupLine = "MakeItFit model = new MakeItFit();" + assertLine = "assertThrows(InvalidTypeException.class, () -> model.getUser(123));" + return [ setupLine, assertLine ] + +getUserInvalidTypeTemplate :: TestTemplate +getUserInvalidTypeTemplate = + genToTestTemplate "testGetUserInvalidType" testGetUserInvalidTypeGenerator 1 + +-- TODO testRemoveNonExistentUserThrowsException +testRemoveNonExistentUserGenerator :: Gen [String] +testRemoveNonExistentUserGenerator = do + let setupLine = "MakeItFit model = new MakeItFit();" + assertLine = "assertThrows(EntityDoesNotExistException.class, () -> model.removeUser(\"doesntexist@gmail.com\"));" + return [ setupLine, assertLine ] + +removeNonExistentUserTemplate :: TestTemplate +removeNonExistentUserTemplate = + genToTestTemplate "testRemoveNonExistentUser" testRemoveNonExistentUserGenerator 1 + +-- testUpdateUser +testUpdateUserGenerator :: Gen [String] +testUpdateUserGenerator = do + user <- arbitrary :: Gen User + let email = userEmail user + + newName <- genUserName + newAge <- choose (18, 80) :: Gen Int + newGender <- arbitrary :: Gen Gender + newWeight <- elements [50..100] :: Gen Int + newHeight <- choose (150, 195) :: Gen Int + newBpm <- choose (60, 100) :: Gen Int + newLevel <- choose (1, 10) :: Gen Int + newAddress <- genAddress + newPhone <- genPhone + + let setupLine = "MakeItFit model = new MakeItFit();" + createLine = "model.createUser(" ++ toJavaCreateUserArgs user ++ ");" + updNameLine = "model.updateUserName(" ++ toJavaExpression newName ++ ", " ++ toJavaExpression email ++ ");" + updAgeLine = "model.updateUserAge(" ++ show newAge ++ ", " ++ toJavaExpression email ++ ");" + updGenderLine = "model.updateUserGender(" ++ toJavaExpression newGender ++ ", " ++ toJavaExpression email ++ ");" + updWeightLine = "model.updateUserWeight(" ++ show newWeight ++ "f, " ++ toJavaExpression email ++ ");" + updHeightLine = "model.updateUserHeight(" ++ show newHeight ++ ", " ++ toJavaExpression email ++ ");" + updBpmLine = "model.updateUserBpm(" ++ show newBpm ++ ", " ++ toJavaExpression email ++ ");" + updLevelLine = "model.updateUserLevel(" ++ show newLevel ++ ", " ++ toJavaExpression email ++ ");" + updAddrLine = "model.updateUserAddress("++ toJavaExpression newAddress ++ ", " ++ toJavaExpression email ++ ");" + updPhoneLine = "model.updateUserPhone(" ++ toJavaExpression newPhone ++ ", " ++ toJavaExpression email ++ ");" + getUpdatedByEmailLine = "User updated = model.getUser(" ++ toJavaExpression email ++ ");" + getCodeLine = "UUID id = updated.getCode();" + getByIdLine = "User u = model.getUser(id);" + assertName1 = "assertEquals(" ++ toJavaExpression newName ++ ", u.getName());" + assertName2 = "assertEquals(" ++ toJavaExpression newName ++ ", updated.getName());" + assertAge = "assertEquals(" ++ show newAge ++ ", updated.getAge());" + assertGender = "assertEquals(" ++ toJavaExpression newGender ++ ", updated.getGender());" + assertWeight = "assertEquals(" ++ show newWeight ++ "f, updated.getWeight());" + assertHeight = "assertEquals(" ++ show newHeight ++ ", updated.getHeight());" + assertBpm = "assertEquals(" ++ show newBpm ++ ", updated.getBpm());" + assertLevel = "assertEquals(" ++ show newLevel ++ ", updated.getLevel());" + assertAddress = "assertEquals(" ++ toJavaExpression newAddress ++ ", updated.getAddress());" + assertPhone = "assertEquals(" ++ toJavaExpression newPhone ++ ", updated.getPhone());" + + return + [ setupLine + , createLine + , updNameLine + , updAgeLine + , updGenderLine + , updWeightLine + , updHeightLine + , updBpmLine + , updLevelLine + , updAddrLine + , updPhoneLine + , getUpdatedByEmailLine + , getCodeLine + , getByIdLine + , assertName1 + , assertName2 + , assertAge + , assertGender + , assertWeight + , assertHeight + , assertBpm + , assertLevel + , assertAddress + , assertPhone + ] + +updateUserTemplate :: TestTemplate +updateUserTemplate = + genToTestTemplate "testUpdateUser" testUpdateUserGenerator 1 + +-- testUpdateEmail +testUpdateEmailGenerator :: Gen [String] +testUpdateEmailGenerator = do + user <- arbitrary :: Gen User + let oldEmail = userEmail user + oldNoSp = filter (/= ' ') oldEmail + newEmail <- genEmail `suchThat` (/= oldEmail) + let newNoSp = filter (/= ' ') newEmail + setupLine = "MakeItFit model = new MakeItFit();" + createLine = "model.createUser(" ++ toJavaCreateUserArgs user ++ ");" + updEmailLine = "model.updateUserEmail(" ++ toJavaExpression oldNoSp ++ ", " ++ toJavaExpression newNoSp ++ ");" + assertOldGone = "assertFalse(model.existsUserWithEmail(" ++ toJavaExpression oldNoSp ++ "));" + assertNewThere = "assertTrue(model.existsUserWithEmail(" ++ toJavaExpression newNoSp ++ "));" + getUserLine = "User user = model.getUser(" ++ toJavaExpression newNoSp ++ ");" + assertNameLine = "assertEquals(" ++ toJavaExpression (userName user) ++ ", user.getName());" + + return + [ setupLine + , createLine + , updEmailLine + , assertOldGone + , assertNewThere + , getUserLine + , assertNameLine + ] + +updateEmailTemplate :: TestTemplate +updateEmailTemplate = + genToTestTemplate "testUpdateEmail" testUpdateEmailGenerator 1 + +-- testDuplicateUser +testDuplicateUserGenerator :: Gen [String] +testDuplicateUserGenerator = do + user <- arbitrary :: Gen User + let setupLine = "MakeItFit model = new MakeItFit();" + firstCreate = "model.createUser(" ++ toJavaCreateUserArgs user ++ ");" + assertLine = "assertThrows(ExistingEntityConflictException.class, () -> model.createUser(" ++ toJavaCreateUserArgs user ++ "));" + return [ setupLine, firstCreate, assertLine ] + +duplicateUserTemplate :: TestTemplate +duplicateUserTemplate = + genToTestTemplate "testDuplicateUser" testDuplicateUserGenerator 1 + +-- testGetAllUsers +testGetAllUsersGenerator :: Gen [String] +testGetAllUsersGenerator = do + user <- arbitrary :: Gen User + let email = userEmail user + createArgs = toJavaCreateUserArgs user + + setupLine = "MakeItFit model = new MakeItFit();" + getAll1 = "List allUsers = model.getAllUsers();" + assertNotNull = "assertNotNull(allUsers);" + assertEmpty = "assertTrue(allUsers.isEmpty());" + createLine = "model.createUser(" ++ toJavaCreateUserArgs user ++ ");" + getAll2 = "allUsers = model.getAllUsers();" + collectEmails = "List emails = allUsers.stream().map(User::getEmail).collect(Collectors.toList());" + assertContains = "assertTrue(emails.contains(" ++ toJavaExpression email ++ "));" + + return + [ setupLine + , getAll1 + , assertNotNull + , assertEmpty + , createLine + , getAll2 + , collectEmails + , assertContains + ] + +getAllUsersTemplate :: TestTemplate +getAllUsersTemplate = + genToTestTemplate "testGetAllUsers" testGetAllUsersGenerator 1 + getActivitiesFromUserTestGenerator :: Gen [String] getActivitiesFromUserTestGenerator = do user <- arbitrary :: Gen User @@ -118,7 +369,7 @@ getActivitiesFromUserTemplate :: TestTemplate getActivitiesFromUserTemplate = genToTestTemplate "getActivitiesFromUserTest" getActivitiesFromUserTestGenerator 1 --- addActivityToUser +-- addActivityToUser addActivityToUserTestGenerator :: Gen [String] addActivityToUserTestGenerator = do user <- arbitrary :: Gen User @@ -151,7 +402,7 @@ addActivityToUserTemplate :: TestTemplate addActivityToUserTemplate = genToTestTemplate "addActivityToUserTest" addActivityToUserTestGenerator 1 --- removeActivityFromUser +-- removeActivityFromUser removeActivityFromUserTestGenerator :: Gen [String] removeActivityFromUserTestGenerator = do user <- arbitrary :: Gen User @@ -191,7 +442,7 @@ removeActivityFromUserTemplate :: TestTemplate removeActivityFromUserTemplate = genToTestTemplate "removeActivityFromUserTest" removeActivityFromUserTestGenerator 1 --- createTrainingPlan +-- createTrainingPlan createTrainingPlanTestGenerator :: Gen [String] createTrainingPlanTestGenerator = do user <- arbitrary :: Gen User @@ -236,7 +487,7 @@ createTrainingPlanExceptionTemplate :: TestTemplate createTrainingPlanExceptionTemplate = genToTestTemplate "createTrainingPlanExceptionTest" createTrainingPlanExceptionTestGenerator 1 --- ConstructTrainingPlan +-- ConstructTrainingPlan constructTrainingPlanTestGenerator :: Gen [String] constructTrainingPlanTestGenerator = do user <- arbitrary :: Gen User @@ -310,7 +561,7 @@ removeTrainingPlanTemplate :: TestTemplate removeTrainingPlanTemplate = genToTestTemplate "removeTrainingPlanTest" removeTrainingPlanTestGenerator 1 --- getTrainingPlan +-- getTrainingPlan getTrainingPlanTestGenerator :: Gen [String] getTrainingPlanTestGenerator = do user <- arbitrary :: Gen User @@ -352,7 +603,7 @@ getTrainingPlanExceptionTemplate :: TestTemplate getTrainingPlanExceptionTemplate = genToTestTemplate "getTrainingPlanExceptionTest" getTrainingPlanExceptionTestGenerator 1 --- updateTrainingPlan +-- updateTrainingPlan updateTrainingPlanTestGenerator :: Gen [String] updateTrainingPlanTestGenerator = do user <- arbitrary :: Gen User @@ -404,7 +655,7 @@ updateTrainingPlanExceptionTemplate :: TestTemplate updateTrainingPlanExceptionTemplate = genToTestTemplate "updateTrainingPlanExceptionTest" updateTrainingPlanExceptionTestGenerator 1 --- getAllTrainingPlans +-- getAllTrainingPlans getAllTrainingPlansTestGenerator :: Gen [String] getAllTrainingPlansTestGenerator = do user <- arbitrary :: Gen User diff --git a/src/testgen/testgen/Generators.hs b/src/testgen/testgen/Generators.hs index a2b5aae..619fd37 100644 --- a/src/testgen/testgen/Generators.hs +++ b/src/testgen/testgen/Generators.hs @@ -22,8 +22,12 @@ module Generators , Activity(..) , TrainingPlan(..) , genActivity - , genTrainingPlan, - toJavaCreateUserArgs + , genTrainingPlan + , toJavaCreateUserArgs + , genAddress + , genPhone + , genEmail + , genUserName ) where import Data.List (intercalate) diff --git a/src/testgen/testgen/TestClass.hs b/src/testgen/testgen/TestClass.hs index 15be59f..65a39fd 100644 --- a/src/testgen/testgen/TestClass.hs +++ b/src/testgen/testgen/TestClass.hs @@ -26,6 +26,16 @@ import FacadeTemplates templates = [ + createAndGetUserTemplate, + removeUserByEmailTemplate, + removeUserByUUIDTemplate, + removeUserInvalidTypeTemplate, + getUserInvalidTypeTemplate, + removeNonExistentUserTemplate, + updateUserTemplate, + updateEmailTemplate, + duplicateUserTemplate, + getAllUsersTemplate, getActivitiesFromUserTemplate, addActivityToUserTemplate, removeActivityFromUserTemplate, @@ -64,6 +74,7 @@ generateUnformattedTestClass = do , "import MakeItFit.users.User;" , "import MakeItFit.users.Gender;" , "import java.util.UUID;" + , "import java.util.stream.Collectors;" , "import MakeItFit.activities.Activity;" , "import MakeItFit.activities.implementation.*;" , "import MakeItFit.utils.MakeItFitDate;" From b40df96e6a36e86d891997b46f654b9acb4bbdc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Lopes?= Date: Wed, 4 Jun 2025 22:12:28 +0100 Subject: [PATCH 14/14] update testgen --- src/testgen/testgen/FacadeTemplates.hs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/testgen/testgen/FacadeTemplates.hs b/src/testgen/testgen/FacadeTemplates.hs index 70c7f65..073bde4 100644 --- a/src/testgen/testgen/FacadeTemplates.hs +++ b/src/testgen/testgen/FacadeTemplates.hs @@ -165,7 +165,7 @@ removeUserByUUIDTemplate :: TestTemplate removeUserByUUIDTemplate = genToTestTemplate "testRemoveUserByUUID" testRemoveUserByUUIDGenerator 1 --- TODO testRemoveUserInvalidType +-- testRemoveUserInvalidTypeGenerator testRemoveUserInvalidTypeGenerator :: Gen [String] testRemoveUserInvalidTypeGenerator = do let setupLine = "MakeItFit model = new MakeItFit();" @@ -176,7 +176,7 @@ removeUserInvalidTypeTemplate :: TestTemplate removeUserInvalidTypeTemplate = genToTestTemplate "testRemoveUserInvalidType" testRemoveUserInvalidTypeGenerator 1 --- TODO testGetUserInvalidType +-- testGetUserInvalidTypeGenerator testGetUserInvalidTypeGenerator :: Gen [String] testGetUserInvalidTypeGenerator = do let setupLine = "MakeItFit model = new MakeItFit();" @@ -187,11 +187,12 @@ getUserInvalidTypeTemplate :: TestTemplate getUserInvalidTypeTemplate = genToTestTemplate "testGetUserInvalidType" testGetUserInvalidTypeGenerator 1 --- TODO testRemoveNonExistentUserThrowsException +-- testRemoveNonExistentUserGenerator testRemoveNonExistentUserGenerator :: Gen [String] testRemoveNonExistentUserGenerator = do + email <- genEmail let setupLine = "MakeItFit model = new MakeItFit();" - assertLine = "assertThrows(EntityDoesNotExistException.class, () -> model.removeUser(\"doesntexist@gmail.com\"));" + assertLine = "assertThrows(EntityDoesNotExistException.class, () -> model.removeUser(" ++ toJavaExpression email ++ "));" return [ setupLine, assertLine ] removeNonExistentUserTemplate :: TestTemplate