casa-reoc-0.1.0.0: test/DataGens.hs
{-# LANGUAGE DataKinds #-}
{-# OPTIONS_GHC -Wall #-}
-- | Generators of the valid data types, built from the public interface.
module DataGens (
genAustralianState,
genRPACategory,
genLikelihood,
genConsequence,
genRiskLevel,
genKeyPosition,
genBackupInterval,
genCourseType,
genComplexity,
genInstructorTakeover,
genTheoryDelivery,
genExamDelivery,
genFlightTestExaminer,
genDirectorship,
genRadioQualification,
genRemotePilots,
genCrewing,
genTransponder,
genVersionChange,
genPerson,
genAddress,
genOperationalHeadquarters,
genCompany,
genFlightTermination,
genEmergencyAction,
genRPAType,
genEquipment,
genAircraft,
genOperatedType,
genRePLOrigin,
genOtherReOCRoles,
genNominee,
genChiefExecutive,
genCRPNominee,
genChiefPilot,
genMCNominee,
genKeyPersonnel,
genOperator,
genContactPerson,
genPrimaryContact,
genHistoryAnswer,
genPersonnelHistory,
genRegulatoryAction,
genRegulatoryHistory,
genDeclarant,
genDeclaration,
genWrittenSignature,
genApplicationForm,
genVersion,
genFirstIssue,
genRevision,
genPolicies,
genRiskAssessment,
genRisk,
genOperationsManual,
genCRINominee,
genRePLHolding,
genTeachingQualification,
genOperationalExperience,
genTrainingCourse,
genTrainingArrangements,
genTrainingMaterial,
genReOC,
genField,
genInvalidValue,
genStep,
genUnfilled,
genInvalid,
genTooMany,
genReOCError,
) where
import Control.Lens (review)
import Hedgehog (Gen)
import qualified Hedgehog.Gen as Gen
import qualified Hedgehog.Range as Range
import PrimitiveGens
import ReOC
genAustralianState :: Gen AustralianState
genAustralianState =
Gen.choice
[ pure (review newSouthWales ())
, pure (review victoria ())
, pure (review queensland ())
, pure (review westernAustralia ())
, pure (review southAustralia ())
, pure (review tasmania ())
, pure (review australianCapitalTerritory ())
, pure (review northernTerritory ())
]
genRPACategory :: Gen RPACategory
genRPACategory =
Gen.choice
[ pure (review aeroplane ())
, pure (review helicopter ())
, pure (review multirotor ())
, pure (review poweredLift ())
]
genLikelihood :: Gen Likelihood
genLikelihood =
Gen.choice
[ pure (review frequent ())
, pure (review occasional ())
, pure (review remote ())
, pure (review improbable ())
, pure (review extremelyImprobable ())
]
genConsequence :: Gen Consequence
genConsequence =
Gen.choice
[ pure (review catastrophic ())
, pure (review hazardous ())
, pure (review moderate ())
, pure (review minor ())
, pure (review negligible ())
]
genRiskLevel :: Gen RiskLevel
genRiskLevel =
Gen.choice
[ pure (review high ())
, pure (review medium ())
, pure (review low ())
]
genKeyPosition :: Gen KeyPosition
genKeyPosition =
Gen.choice
[ pure (review chiefExecutiveOfficer ())
, pure (review chiefRemotePilot ())
, pure (review maintenanceController ())
]
genBackupInterval :: Gen BackupInterval
genBackupInterval =
Gen.choice
[ pure (review daily ())
, pure (review weekly ())
, pure (review monthly ())
]
genCourseType :: Gen CourseType
genCourseType =
Gen.choice
[ pure (review initialCourse ())
, pure (review upgradeSameCategory ())
, pure (review upgradeDifferentCategory ())
]
genComplexity :: Gen Complexity
genComplexity =
Gen.choice
[ pure (review automatedAndManual ())
, pure (review automatedOnly ())
]
genInstructorTakeover :: Gen InstructorTakeover
genInstructorTakeover =
Gen.choice
[ pure (review dualControllerLink ())
, pure (review sharedController ())
]
genTheoryDelivery :: Gen TheoryDelivery
genTheoryDelivery =
Gen.choice
[ pure (review classroomTheory ())
, pure (review blendedTheory ())
, pure (review onlineTheory ())
]
genExamDelivery :: Gen ExamDelivery
genExamDelivery =
Gen.choice
[ pure (review paperExamination ())
, pure (review computerExamination ())
]
genFlightTestExaminer :: Gen FlightTestExaminer
genFlightTestExaminer =
Gen.choice
[ pure (review criConductsFlightTests ())
, pure (review independentExaminerWhereAvailable ())
]
genDirectorship :: Gen Directorship
genDirectorship =
Gen.choice
[ pure (review soleDirector ())
, pure (review director ())
, pure (review notADirector ())
]
genRadioQualification :: Gen RadioQualification
genRadioQualification =
Gen.choice
[ pure (review flightCrewLicence ())
, pure (review radioOperatorCertificate ())
, pure (review noRadioQualification ())
]
genRemotePilots :: Gen RemotePilots
genRemotePilots =
Gen.choice
[ pure (review crpIsOnlyRemotePilot ())
, pure (review otherRemotePilots ())
]
genCrewing :: Gen Crewing
genCrewing =
Gen.choice
[ pure (review soloOperationsOnly ())
, pure (review soloAndMultiCrewOperations ())
]
genTransponder :: Gen Transponder
genTransponder =
Gen.choice
[ pure (review noTransponder ())
, pure (review transponderFitted ())
]
genVersionChange :: Gen VersionChange
genVersionChange =
Gen.choice
[ pure (review majorRevision ())
, pure (review minorRevision ())
]
genPerson :: Gen Person
genPerson =
Person'
<$> genFormText
<*> genARN
<*> genPhoneNumber
<*> genEmailAddress
genAddress :: Gen Address
genAddress =
Address'
<$> Gen.nonEmpty (Range.linear 1 2) genText1
<*> genText1
<*> genAustralianState
<*> genPostcode
genOperationalHeadquarters :: Gen OperationalHeadquarters
genOperationalHeadquarters =
Gen.choice
[ pure (review atRegisteredOffice ())
, review operationalHeadquartersAddress <$> genAddress
]
genCompany :: Gen Company
genCompany =
Company'
<$> genFormText
<*> genABN
<*> genARN
<*> genAddress
<*> genOperationalHeadquarters
<*> genPhoneNumber
<*> genEmailAddress
<*> Gen.maybe genFormText
genFlightTermination :: Gen FlightTermination
genFlightTermination =
Gen.choice
[ pure (review noFlightTerminationSystem ())
, review flightTerminationSystem <$> genText1
]
genEmergencyAction :: Gen EmergencyAction
genEmergencyAction =
EmergencyAction'
<$> genText1
<*> genText1
<*> Gen.list (Range.linear 0 2) genText1
genRPAType :: Gen RPAType
genRPAType =
RPAType'
<$> genText1
<*> genText1
<*> genFormText
<*> genRPACategory
<*> genGrossWeight
<*> genText1
<*> genTransponder
<*> genFlightTermination
<*> Gen.nonEmpty (Range.linear 1 2) genText1
<*> Gen.list (Range.linear 0 2) genText1
<*> Gen.maybe genText1
<*> Gen.list (Range.linear 0 2) genEmergencyAction
genEquipment :: Gen Equipment
genEquipment =
Equipment'
<$> genText1
<*> genText1
genAircraft :: Gen Aircraft
genAircraft =
Aircraft'
<$> genText1
<*> Gen.list (Range.linear 0 2) genEquipment
genOperatedType :: Gen OperatedType
genOperatedType =
OperatedType'
<$> genRPAType
<*> Gen.nonEmpty (Range.linear 1 2) genAircraft
genRePLOrigin :: Gen RePLOrigin
genRePLOrigin =
Gen.choice
[ pure (review pplTheory ())
, review rePLTrainingOrganisation <$> genFormText
]
genOtherReOCRoles :: Gen OtherReOCRoles
genOtherReOCRoles =
Gen.choice
[ pure (review noOtherReOCRoles ())
, review otherReOCRolesHeld <$> genFormText
]
genNominee :: Gen Nominee
genNominee =
Nominee'
<$> genPerson
<*> Gen.list (Range.linear 0 2) genText1
<*> genText1
genChiefExecutive :: Gen ChiefExecutive
genChiefExecutive =
ChiefExecutive'
<$> genNominee
<*> genDirectorship
<*> Gen.maybe genFormText
genCRPNominee :: Gen CRPNominee
genCRPNominee =
Gen.choice
[ pure (review crpIsCEO ())
, review crpNominated <$> genNominee
]
genChiefPilot :: Gen ChiefPilot
genChiefPilot =
ChiefPilot'
<$> genCRPNominee
<*> genRePLOrigin
<*> genFormText
<*> genOtherReOCRoles
<*> genRadioQualification
genMCNominee :: Gen MCNominee
genMCNominee =
Gen.choice
[ pure (review mcIsCEO ())
, pure (review mcIsCRP ())
, review mcNominated <$> genNominee
]
genKeyPersonnel :: Gen KeyPersonnel
genKeyPersonnel =
KeyPersonnel'
<$> genChiefExecutive
<*> genChiefPilot
<*> genMCNominee
genOperator :: Gen Operator
genOperator =
Operator'
<$> genCompany
<*> genKeyPersonnel
<*> genSome genOperatedType
genContactPerson :: Gen ContactPerson
genContactPerson =
ContactPerson'
<$> genFormText
<*> genFormText
<*> genPhoneNumber
<*> genEmailAddress
genPrimaryContact :: Gen PrimaryContact
genPrimaryContact =
Gen.choice
[ pure (review applicantIsPrimaryContact ())
, review primaryContactPerson <$> genContactPerson
]
genHistoryAnswer :: Gen HistoryAnswer
genHistoryAnswer =
Gen.choice
[ pure (review noHistory ())
, review historyDisclosed <$> genFormText
]
genPersonnelHistory :: Gen PersonnelHistory
genPersonnelHistory =
PersonnelHistory'
<$> genHistoryAnswer
<*> genHistoryAnswer
<*> genHistoryAnswer
<*> genHistoryAnswer
genRegulatoryAction :: Gen RegulatoryAction
genRegulatoryAction =
RegulatoryAction'
<$> Gen.bool
<*> genFormText
<*> genFormText
<*> genDay
<*> genFormText
genRegulatoryHistory :: Gen RegulatoryHistory
genRegulatoryHistory =
Gen.choice
[ pure (review noRegulatoryAction ())
, review regulatoryActionTaken <$> genRegulatoryAction
]
genDeclarant :: Gen Declarant
genDeclarant =
Declarant'
<$> genFormText
<*> genFormText
genDeclaration :: Gen Declaration
genDeclaration =
Gen.choice
[ pure (review declaredByCEO ())
, review declaredByResponsibleManager <$> genFormText
, review declaredByAgent <$> genFormText
, review declaredByOther <$> genDeclarant
]
genWrittenSignature :: Gen WrittenSignature
genWrittenSignature =
Gen.choice
[ review writtenSignatureImage <$> genByteString
, review writtenSignatureFile <$> genFilePath
]
genApplicationForm :: Gen ApplicationForm
genApplicationForm =
ApplicationForm'
<$> genPrimaryContact
<*> genPersonnelHistory
<*> genRegulatoryHistory
<*> Gen.bool
<*> genAtMost genFormText
<*> genDeclaration
<*> Gen.maybe genWrittenSignature
genVersion :: Gen Version
genVersion =
Version'
<$> genNatural
<*> genNatural
genFirstIssue :: Gen FirstIssue
genFirstIssue =
FirstIssue'
<$> genVersion
<*> genMonth
<*> genText1
<*> genText1
<*> genText1
genRevision :: Gen Revision
genRevision =
Revision'
<$> genVersionChange
<*> genNatural
<*> genText1
<*> genText1
<*> genText1
genPolicies :: Gen Policies
genPolicies =
Policies'
<$> genPositive
<*> genPositive
<*> genPositive
<*> genPositive
<*> genPositive
<*> genPositive
<*> genPositive
<*> genPositive
<*> genPercentage
<*> genBackupInterval
<*> genPositive
<*> genPositive
genRiskAssessment :: Gen RiskAssessment
genRiskAssessment =
RiskAssessment'
<$> genLikelihood
<*> genConsequence
genRisk :: Gen Risk
genRisk =
Risk'
<$> genText1
<*> genText1
<*> genText1
<*> genRiskAssessment
<*> genText1
<*> genRiskAssessment
<*> genKeyPosition
<*> genMonth
<*> genReviewMonths
genOperationsManual :: Gen OperationsManual
genOperationsManual =
OperationsManual'
<$> genFirstIssue
<*> Gen.list (Range.linear 0 2) genRevision
<*> Gen.nonEmpty (Range.linear 1 2) genText1
<*> genPolicies
<*> Gen.nonEmpty (Range.linear 1 2) genRisk
<*> genCrewing
<*> genRemotePilots
genCRINominee :: Gen CRINominee
genCRINominee =
Gen.choice
[ pure (review criIsCEO ())
, pure (review criIsCRP ())
, pure (review criIsMC ())
, review criNominated <$> genNominee
]
genRePLHolding :: Gen RePLHolding
genRePLHolding =
Gen.choice
[ pure (review holdsRePLForEachType ())
, review rePLHoldingIntent <$> genFormText
]
genTeachingQualification :: Gen TeachingQualification
genTeachingQualification =
Gen.choice
[ review teachingQualificationHeld <$> genFormText
, review teachingQualificationIntent <$> genFormText
]
genOperationalExperience :: Gen OperationalExperience
genOperationalExperience =
Gen.choice
[ pure (review hasOperationalExperience ())
, review operationalExperienceIntent <$> genFormText
, pure (review operationalExperienceNotApplicable ())
]
genTrainingCourse :: Gen TrainingCourse
genTrainingCourse =
TrainingCourse'
<$> genCourseType
<*> genOperatedType
<*> Gen.nonEmpty (Range.linear 1 2) genComplexity
genTrainingArrangements :: Gen TrainingArrangements
genTrainingArrangements =
TrainingArrangements'
<$> Gen.nonEmpty (Range.linear 1 2) genText1
<*> Gen.nonEmpty (Range.linear 1 2) genText1
<*> genPositive
<*> genPositive
<*> genInstructorTakeover
<*> genTheoryDelivery
<*> genExamDelivery
<*> genPassMark
<*> genFlightTestExaminer
<*> Gen.maybe genText1
genTrainingMaterial :: Gen TrainingMaterial
genTrainingMaterial =
TrainingMaterial'
<$> genCRINominee
<*> genRePLHolding
<*> genTeachingQualification
<*> genOperationalExperience
<*> genOtherReOCRoles
<*> genSome genTrainingCourse
<*> genTrainingArrangements
genReOC :: Gen ReOC
genReOC =
ReOC'
<$> genOperator
<*> genApplicationForm
<*> genOperationsManual
<*> Gen.maybe genTrainingMaterial
genField :: Gen Field
genField =
Gen.choice
[ pure (review personFullName ())
, pure (review personArn ())
, pure (review personPhoneNumber ())
, pure (review personEmailAddress ())
, pure (review addressStreetAddress ())
, pure (review addressSuburb ())
, pure (review addressStateOrTerritory ())
, pure (review addressPostcode ())
, pure (review operationalHeadquartersAtRegisteredOffice ())
, pure (review operationalHeadquartersOperationalHeadquartersAddress ())
, pure (review companyCompanyName ())
, pure (review companyAbn ())
, pure (review companyArn ())
, pure (review companyRegisteredOffice ())
, pure (review companyOperationalHeadquarters ())
, pure (review companyPhoneNumber ())
, pure (review companyEmailAddress ())
, pure (review companyBusinessName ())
, pure (review flightTerminationNoFlightTerminationSystem ())
, pure (review flightTerminationFlightTerminationSystem ())
, pure (review emergencyActionSituation ())
, pure (review emergencyActionResponse ())
, pure (review emergencyActionActionSteps ())
, pure (review rpaTypeRpaMake ())
, pure (review rpaTypeRpaModel ())
, pure (review rpaTypeShortName ())
, pure (review rpaTypeCategory ())
, pure (review rpaTypeMaximumGrossWeight ())
, pure (review rpaTypeUserManual ())
, pure (review rpaTypeTransponderCarriage ())
, pure (review rpaTypeFlightTermination ())
, pure (review rpaTypeInspectionItems ())
, pure (review rpaTypeBeforeFlight ())
, pure (review rpaTypeBatteryWarnings ())
, pure (review rpaTypeEmergencyActions ())
, pure (review equipmentEquipmentDescription ())
, pure (review equipmentSerialNumber ())
, pure (review aircraftSerialNumber ())
, pure (review aircraftAssociatedEquipment ())
, pure (review operatedTypeRpaType ())
, pure (review operatedTypeAirframes ())
, pure (review rePLOriginPplTheory ())
, pure (review rePLOriginRePLTrainingOrganisation ())
, pure (review otherReOCRolesNoOtherReOCRoles ())
, pure (review otherReOCRolesOtherReOCRolesHeld ())
, pure (review nomineePerson ())
, pure (review nomineeOtherQualifications ())
, pure (review nomineeAviationExperience ())
, pure (review chiefExecutiveNominee ())
, pure (review chiefExecutiveDirectorStatus ())
, pure (review chiefExecutiveManagementExperience ())
, pure (review crpNomineeCrpIsCEO ())
, pure (review crpNomineeCrpNominated ())
, pure (review chiefPilotCrpNominee ())
, pure (review chiefPilotRePLOrigin ())
, pure (review chiefPilotRpaHistory ())
, pure (review chiefPilotOtherReOCRoles ())
, pure (review chiefPilotRadio ())
, pure (review mcNomineeMcIsCEO ())
, pure (review mcNomineeMcIsCRP ())
, pure (review mcNomineeMcNominated ())
, pure (review keyPersonnelChiefExecutive ())
, pure (review keyPersonnelChiefPilot ())
, pure (review keyPersonnelMcNominee ())
, pure (review operatorCompany ())
, pure (review operatorKeyPersonnel ())
, pure (review operatorFleet ())
, pure (review contactPersonFullName ())
, pure (review contactPersonPosition ())
, pure (review contactPersonPhoneNumber ())
, pure (review contactPersonEmailAddress ())
, pure (review primaryContactApplicantIsPrimaryContact ())
, pure (review primaryContactPrimaryContactPerson ())
, pure (review historyAnswerNoHistory ())
, pure (review historyAnswerHistoryDisclosed ())
, pure (review personnelHistoryActionTaken ())
, pure (review personnelHistoryTransportLicenceRefused ())
, pure (review personnelHistoryCriminalConviction ())
, pure (review personnelHistorySuspensionPending ())
, pure (review regulatoryActionReocSuspendedOrCancelled ())
, pure (review regulatoryActionTypeOfAction ())
, pure (review regulatoryActionAuthorisationAction ())
, pure (review regulatoryActionActionDate ())
, pure (review regulatoryActionActionDetails ())
, pure (review regulatoryHistoryNoRegulatoryAction ())
, pure (review regulatoryHistoryRegulatoryActionTaken ())
, pure (review declarantFullName ())
, pure (review declarantRole ())
, pure (review declarationDeclaredByCEO ())
, pure (review declarationDeclaredByResponsibleManager ())
, pure (review declarationDeclaredByAgent ())
, pure (review declarationDeclaredByOther ())
, pure (review writtenSignatureWrittenSignatureImage ())
, pure (review writtenSignatureWrittenSignatureFile ())
, pure (review applicationFormPrimaryContact ())
, pure (review applicationFormPersonnelHistory ())
, pure (review applicationFormRegulatoryHistory ())
, pure (review applicationFormProceduresLibrary ())
, pure (review applicationFormOtherDocuments ())
, pure (review applicationFormDeclaration ())
, pure (review applicationFormSignature ())
, pure (review versionMajorVersion ())
, pure (review versionMinorVersion ())
, pure (review firstIssueVersion ())
, pure (review firstIssueIssueDate ())
, pure (review firstIssueEffective ())
, pure (review firstIssueParts ())
, pure (review firstIssueDetails ())
, pure (review revisionVersionIncrement ())
, pure (review revisionMonthsAfter ())
, pure (review revisionEffective ())
, pure (review revisionParts ())
, pure (review revisionDetails ())
, pure (review policiesRecencyFlights ())
, pure (review policiesRecencyDays ())
, pure (review policiesRefresherMonths ())
, pure (review policiesAlcoholHours ())
, pure (review policiesRestHours ())
, pure (review policiesDutyHours ())
, pure (review policiesInspectionMonths ())
, pure (review policiesInspectionHours ())
, pure (review policiesBatteryReserve ())
, pure (review policiesBackupFrequency ())
, pure (review policiesIndependentReviewYears ())
, pure (review policiesCheckingMonths ())
, pure (review riskAssessmentRiskLikelihood ())
, pure (review riskAssessmentRiskConsequence ())
, pure (review riskHazard ())
, pure (review riskRiskDescription ())
, pure (review riskExistingControls ())
, pure (review riskInitialRisk ())
, pure (review riskAdditionalControls ())
, pure (review riskResidualRisk ())
, pure (review riskRiskOwner ())
, pure (review riskDateEntered ())
, pure (review riskReviewMonths ())
, pure (review operationsManualFirstIssue ())
, pure (review operationsManualRevisions ())
, pure (review operationsManualServices ())
, pure (review operationsManualPolicies ())
, pure (review operationsManualRiskRegister ())
, pure (review operationsManualCrew ())
, pure (review operationsManualPilots ())
, pure (review criNomineeCriIsCEO ())
, pure (review criNomineeCriIsCRP ())
, pure (review criNomineeCriIsMC ())
, pure (review criNomineeCriNominated ())
, pure (review rePLHoldingHoldsRePLForEachType ())
, pure (review rePLHoldingRePLHoldingIntent ())
, pure (review teachingQualificationTeachingQualificationHeld ())
, pure (review teachingQualificationTeachingQualificationIntent ())
, pure (review operationalExperienceHasOperationalExperience ())
, pure (review operationalExperienceOperationalExperienceIntent ())
, pure (review operationalExperienceOperationalExperienceNotApplicable ())
, pure (review trainingCourseCourseKind ())
, pure (review trainingCourseTrainingRPA ())
, pure (review trainingCourseComplexities ())
, pure (review trainingArrangementsTheoryVenues ())
, pure (review trainingArrangementsPracticalAreas ())
, pure (review trainingArrangementsMaxStudentsPerCourse ())
, pure (review trainingArrangementsMaxStudentsPerInstructor ())
, pure (review trainingArrangementsTakeover ())
, pure (review trainingArrangementsTheory ())
, pure (review trainingArrangementsExam ())
, pure (review trainingArrangementsExamPassMark ())
, pure (review trainingArrangementsExaminer ())
, pure (review trainingArrangementsSimulator ())
, pure (review trainingMaterialCriNominee ())
, pure (review trainingMaterialRePLHolding ())
, pure (review trainingMaterialTeachingQualification ())
, pure (review trainingMaterialOperationalExperience ())
, pure (review trainingMaterialCriOtherReOCRoles ())
, pure (review trainingMaterialTrainingCourses ())
, pure (review trainingMaterialTrainingArrangements ())
, pure (review reOCOperator ())
, pure (review reOCApplicationForm ())
, pure (review reOCOperationsManual ())
, pure (review reOCMaybeTrainingMaterial ())
]
genInvalidValue :: Gen InvalidValue
genInvalidValue =
Gen.choice
[ review invalidText1 <$> genText
, review invalidFormText <$> genText
, review invalidABN <$> genText
, review invalidARN <$> genText
, review invalidEmailAddress <$> genText
, review invalidPhoneNumber <$> genText
, review invalidPostcode <$> genText
, review invalidPositive <$> genNatural
, review invalidPercentage <$> genNatural
, review invalidGrossWeight <$> genNatural
, review invalidReviewMonths <$> genNatural
, review invalidPassMark <$> genNatural
]
genStep :: Gen Step
genStep =
Gen.choice
[ review field <$> genField
, review stepIndex <$> genNatural
]
genUnfilled :: Gen Unfilled
genUnfilled =
Unfilled
<$> Gen.list (Range.linear 0 2) genStep
genInvalid :: Gen Invalid
genInvalid =
Invalid
<$> Gen.list (Range.linear 0 2) genStep
<*> genInvalidValue
genTooMany :: Gen TooMany
genTooMany =
TooMany
<$> Gen.list (Range.linear 0 2) genStep
<*> genNatural
<*> genNatural
genReOCError :: Gen ReOCError
genReOCError =
Gen.choice
[ review unfilled <$> genUnfilled
, review invalid <$> genInvalid
, review tooMany <$> genTooMany
]