UNPKG

haystacks-tt

Version:

A simple Haystacks-async based command line typing tutor program for Windows, Mac & Linux.

315 lines (306 loc) 39.4 kB
/** * @file application.message.constants.validation.js * @module application.message.constants.validation * @description Contains all validations for named application message constants. * @requires module:application.message.constants * @author Seth Hollingsead * @date 2023/02/24 * @copyright Copyright © 2023-… by Seth Hollingsead. All rights reserved */ // Internal imports import * as app_msg from '../../constants/application.message.constants.js'; /** * @function applicationMessageConstantsValidation * @description Initializes the application message constants validation data objects array. * @return {array<object<Name,Actual,Expected>>} An array of constants validation data objects. * @author Seth Hollingsead * @date 2023/02/24 */ export const applicationMessageConstantsValidation = [ // General application messages {Name: 'crawAccountDataIs', Actual: app_msg.crawAccountDataIs, Expected: 'rawAccountData is: '}, {Name: 'crawLessonsDataIs', Actual: app_msg.crawLessonsDataIs, Expected: 'rawLessonsData is: '}, {Name: 'cuserAccountDataIs', Actual: app_msg.cuserAccountDataIs, Expected: 'userAccountData is: '}, {Name: 'cuserAccountKeyIs', Actual: app_msg.cuserAccountKeyIs, Expected: 'userAccountKey is: '}, {Name: 'cuserAccountIs', Actual: app_msg.cuserAccountIs, Expected: 'userAccount is: '}, {Name: 'caccountNameIs', Actual: app_msg.caccountNameIs, Expected: 'accountName is: '}, {Name: 'clessonsDataIs', Actual: app_msg.clessonsDataIs, Expected: 'lessonsData is: '}, {Name: 'clessonKeyIs', Actual: app_msg.clessonKeyIs, Expected: 'lessonKey is: '}, {Name: 'clessonDataIs', Actual: app_msg.clessonDataIs, Expected: 'lessonData is: '}, {Name: 'clessonNameArrayIs', Actual: app_msg.clessonNameArrayIs, Expected: 'lessonNameArray is: '}, {Name: 'clessonNameIs', Actual: app_msg.clessonNameIs, Expected: 'lessonName is: '}, {Name: 'cnewAccountIs', Actual: app_msg.cnewAccountIs, Expected: 'newAccount is: '}, {Name: 'cstoredAccountDataIs', Actual: app_msg.cstoredAccountDataIs, Expected: 'storedAccountData is: '}, {Name: 'cnewlyMergedAccountDataIs', Actual: app_msg.cnewlyMergedAccountDataIs, Expected: 'newlyMergedAccountData is: '}, {Name: 'cdataToStoreIs', Actual: app_msg.cdataToStoreIs, Expected: 'dataToStore is: '}, {Name: 'ccleanedAccountDataIs', Actual: app_msg.ccleanedAccountDataIs, Expected: 'cleanedAccountData is: '}, {Name: 'cconfirmedDeleteUserResponseIs', Actual: app_msg.cconfirmedDeleteUserResponseIs, Expected: 'confirmedDeleteUserResponse is: '}, {Name: 'callAccountsDataIs', Actual: app_msg.callAccountsDataIs, Expected: 'allAccountsData is: '}, {Name: 'clessonNumberIs', Actual: app_msg.clessonNumberIs, Expected: 'lessonNumber is: '}, {Name: 'cindividualLessonDataIs', Actual: app_msg.cindividualLessonDataIs, Expected: 'individualLessonData is: '}, {Name: 'cindividualLessonLineKeyIs', Actual: app_msg.cindividualLessonLineKeyIs, Expected: 'individualLessonLineKey is: '}, {Name: 'cindividualLessonLineIs', Actual: app_msg.cindividualLessonLineIs, Expected: 'individualLessonLine is: '}, {Name: 'ccurrentUserNameIs', Actual: app_msg.ccurrentUserNameIs, Expected: 'currentUserName is: '}, {Name: 'clessonPassingScoreEnabledIs', Actual: app_msg.clessonPassingScoreEnabledIs, Expected: 'lessonPassingScoreEnabled is: '}, {Name: 'cpassingAccuracyScoreLimitIs', Actual: app_msg.cpassingAccuracyScoreLimitIs, Expected: 'passingAccuracyScoreLimit is: '}, {Name: 'cpassingSpeedScoreLimitIs', Actual: app_msg.cpassingSpeedScoreLimitIs, Expected: 'passingSpeedScoreLimit is: '}, {Name: 'clessonScoreDataIs', Actual: app_msg.clessonScoreDataIs, Expected: 'lessonScoreData is: '}, {Name: 'cmaxLessonNumberIs', Actual: app_msg.cmaxLessonNumberIs, Expected: 'maxLessonNumber is: '}, {Name: 'cuserLessonNumberIs', Actual: app_msg.cuserLessonNumberIs, Expected: 'userLessonNumber is: '}, {Name: 'clessonAdvancementScoreLimitAccuracyIs', Actual: app_msg.clessonAdvancementScoreLimitAccuracyIs, Expected: 'lessonAdvancementScoreLimitAccuracy is: '}, {Name: 'clessonAdvancementScoreLimitSpeedIs', Actual: app_msg.clessonAdvancementScoreLimitSpeedIs, Expected: 'lessonAdvancementScoreLimitSpeed is: '}, {Name: 'cactualLessonDataIs', Actual: app_msg.cactualLessonDataIs, Expected: 'actualLessonData is: '}, {Name: 'ccurrentLessonNumberIs', Actual: app_msg.ccurrentLessonNumberIs, Expected: 'currentLessonNumber is: '}, {Name: 'clessonDescriptionIs', Actual: app_msg.clessonDescriptionIs, Expected: 'lessonDescription is: '}, {Name: 'callLessonLinesIs', Actual: app_msg.callLessonLinesIs, Expected: 'allLessonLines is: '}, {Name: 'callLessonLinesDataObjectIs', Actual: app_msg.callLessonLinesDataObjectIs, Expected: 'allLessonLinesDataObject is: '}, {Name: 'clessonLineScoreDataIs', Actual: app_msg.clessonLineScoreDataIs, Expected: 'lessonLineScoreData is: '}, {Name: 'clessonLineStringIs', Actual: app_msg.clessonLineStringIs, Expected: 'lessonLineString is: '}, {Name: 'cuserEnteredCharacterIs', Actual: app_msg.cuserEnteredCharacterIs, Expected: 'userEnteredCharacter is: '}, {Name: 'clineStartTimeIs', Actual: app_msg.clineStartTimeIs, Expected: 'lineStartTime is: '}, {Name: 'clineEndTimeIs', Actual: app_msg.clineEndTimeIs, Expected: 'lineEndTime is: '}, {Name: 'ccharactersCorrectCountIs', Actual: app_msg.ccharactersCorrectCountIs, Expected: 'charactersCorrectCount is: '}, {Name: 'ccharactersInCorrectCountIs', Actual: app_msg.ccharactersInCorrectCountIs, Expected: 'charactersIncorrectCount is: '}, {Name: 'ctotalNumberOfWordsIs', Actual: app_msg.ctotalNumberOfWordsIs, Expected: 'totalNumberOfWords is: '}, {Name: 'cwpmIs', Actual: app_msg.cwpmIs, Expected: 'wpm is: '}, {Name: 'cwpmSumIs', Actual: app_msg.cwpmSumIs, Expected: 'wpmSum is: '}, {Name: 'caccuracyIs', Actual: app_msg.caccuracyIs, Expected: 'accuracy is: '}, {Name: 'caccuracySumIs', Actual: app_msg.caccuracySumIs, Expected: 'accuracySum is: '}, {Name: 'cscoresDataArrayIs', Actual: app_msg.cscoresDataArrayIs, Expected: 'scoresDataArray is: '}, {Name: 'cscoresDataArrayLengthIs', Actual: app_msg.cscoresDataArrayLengthIs, Expected: 'scoresDataArray.length is: '}, {Name: 'cscoreObjectIs', Actual: app_msg.cscoreObjectIs, Expected: 'scoreObject is: '}, {Name: 'clessonTimeStampIs', Actual: app_msg.clessonTimeStampIs, Expected: 'lessonTimeStamp is: '}, {Name: 'ctotalTimeIs', Actual: app_msg.ctotalTimeIs, Expected: 'totalTime is: '}, {Name: 'ctotalCorrectCharacterCountIs', Actual: app_msg.ctotalCorrectCharacterCountIs, Expected: 'totalCorrectCharacterCount is: '}, {Name: 'ctotalIncorrectCharacterCountIs', Actual: app_msg.ctotalIncorrectCharacterCountIs, Expected: 'totalIncorrectCharacterCount is: '}, {Name: 'ctotalWordsIs', Actual: app_msg.ctotalWordsIs, Expected: 'totalWords is: '}, {Name: 'caverageWpmIs', Actual: app_msg.caverageWpmIs, Expected: 'averageWPM is: '}, {Name: 'caverageAccuracyIs', Actual: app_msg.caverageAccuracyIs, Expected: 'averageAccuracy is: '}, {Name: 'cupdatedUserAccountDataIs', Actual: app_msg.cupdatedUserAccountDataIs, Expected: 'updatedUserAccountData is: '}, {Name: 'cdataToAppendIs', Actual: app_msg.cdataToAppendIs, Expected: 'dataToAppend is: '}, {Name: 'ccurrentUserAccountNameIs', Actual: app_msg.ccurrentUserAccountNameIs, Expected: 'currentUserAccountName is: '}, {Name: 'clessonNameKeyIs', Actual: app_msg.clessonNameKeyIs, Expected: 'lessonNameKey is: '}, {Name: 'cusersLessonDataObjectIs', Actual: app_msg.cusersLessonDataObjectIs, Expected: 'usersLessonDataObject is: '}, {Name: 'cusersLessonDataObjectKeysIs', Actual: app_msg.cusersLessonDataObjectKeysIs, Expected: 'usersLessonDataObjectKeys is: '}, {Name: 'cusersLessonDataIs', Actual: app_msg.cusersLessonDataIs, Expected: 'usersLessonData is: '}, {Name: 'cusersLessonDataAfterPushIs', Actual: app_msg.cusersLessonDataAfterPushIs, Expected: 'usersLessonData after data push is: '}, {Name: 'clessonNameKeyEqualsLessonName', Actual: app_msg.clessonNameKeyEqualsLessonName, Expected: 'lessonNameKey === lessonName'}, {Name: 'cappAccountsPathIs', Actual: app_msg.cappAccountsPathIs, Expected: 'appAccountsPath is: '}, {Name: 'cadvancementLimitSettingIs', Actual: app_msg.cadvancementLimitSettingIs, Expected: 'advancementLimitSetting is: '}, {Name: 'cindividualizedLessonSettingIs', Actual: app_msg.cindividualizedLessonSettingIs, Expected: 'individualizedLessonSetting is: '}, {Name: 'callLessonsDataIs', Actual: app_msg.callLessonsDataIs, Expected: 'allLessonsData is: '}, {Name: 'clessonPlanKeysIs', Actual: app_msg.clessonPlanKeysIs, Expected: 'lessonPlanKeys is: '}, {Name: 'clessonKeyValueIs', Actual: app_msg.clessonKeyValueIs, Expected: 'lessonKeyValue is: '}, {Name: 'cadjustedWpmIs', Actual: app_msg.cadjustedWpmIs, Expected: 'adjustedWpm is: '}, {Name: 'clessonCountIs', Actual: app_msg.clessonCountIs, Expected: 'lessonCount is: '}, {Name: 'chighestScoringLessonAboveAdvancementLimitIs', Actual: app_msg.chighestScoringLessonAboveAdvancementLimitIs, Expected: 'highestScoringLessonAboveAdvancementLimit is: '}, {Name: 'cmasterLessonsData', Actual: app_msg.cmasterLessonsData, Expected: 'masterLessonsData is: '}, {Name: 'chighestScoreForLessonIs', Actual: app_msg.chighestScoreForLessonIs, Expected: 'highestScoreForLesson is: '}, {Name: 'cindividualLessonNameIs', Actual: app_msg.cindividualLessonNameIs, Expected: 'individualLessonName is: '}, {Name: 'cusersLessonScoreIndividualLessonRecordIs', Actual: app_msg.cusersLessonScoreIndividualLessonRecordIs, Expected: 'usersLessonScoreIndividualLessonRecord is: '}, {Name: 'caccuracyLimitIs', Actual: app_msg.caccuracyLimitIs, Expected: 'accuracyLimit is: '}, {Name: 'cspeedLimitIs', Actual: app_msg.cspeedLimitIs, Expected: 'speedLimit is: '}, {Name: 'cinputUserNameIs', Actual: app_msg.cinputUserNameIs, Expected: 'inputUserName is: '}, {Name: 'cdesiredCurriculumIs', Actual: app_msg.cdesiredCurriculumIs, Expected: 'desiredCurriculum is: '}, {Name: 'ccurrentCurriculumIndexIs', Actual: app_msg.ccurrentCurriculumIndexIs, Expected: 'currentCurriculumIndex is: '}, {Name: 'cnewCurrentCurriculumIndexIs', Actual: app_msg.cnewCurrentCurriculumIndexIs, Expected: 'newCurrentCurriculumIndex is: '}, {Name: 'cstringSettingValueIs', Actual: app_msg.cstringSettingValueIs, Expected: 'stringSettingValue is: '}, {Name: 'cnewSettingValueIs', Actual: app_msg.cnewSettingValueIs, Expected: 'newSettingValue is: '}, {Name: 'csettingSavedIs', Actual: app_msg.csettingSavedIs, Expected: 'settingSaved is: '}, {Name: 'ccurriculumIndexIs', Actual: app_msg.ccurriculumIndexIs, Expected: 'curriculumIndex is: '}, {Name: 'cuserName', Actual: app_msg.cuserName, Expected: 'userName'}, {Name: 'cuserNameIs', Actual: app_msg.cuserNameIs, Expected: 'userName is: '}, {Name: 'cuserName1Is', Actual: app_msg.cuserName1Is, Expected: 'userName1 is: '}, {Name: 'cuserName2Is', Actual: app_msg.cuserName2Is, Expected: 'userName2 is: '}, {Name: 'cuserDataIs', Actual: app_msg.cuserDataIs, Expected: 'userData is: '}, {Name: 'cuserData1Is', Actual: app_msg.cuserData1Is, Expected: 'userData1 is: '}, {Name: 'cuserData2Is', Actual: app_msg.cuserData2Is, Expected: 'userData2 is: '}, {Name: 'ccurriculumDataIs', Actual: app_msg.ccurriculumDataIs, Expected: 'curriculumData is: '}, {Name: 'ccurrentCurriculumDataIs', Actual: app_msg.ccurrentCurriculumDataIs, Expected: 'currentCurriculumData is: '}, {Name: 'coptionalCurriculumIndexIs', Actual: app_msg.coptionalCurriculumIndexIs, Expected: 'optionalCurriculumIndex is: '}, {Name: 'cuserHasCurriculumIndexIs', Actual: app_msg.cuserHasCurriculumIndexIs, Expected: 'userHasCurriculumIndex is: '}, {Name: 'clessonsIs', Actual: app_msg.clessonsIs, Expected: 'lessons is: '}, {Name: 'cexistingLessonNameIs', Actual: app_msg.cexistingLessonNameIs, Expected: 'existingLessonName is: '}, {Name: 'ccurriculumNameIs', Actual: app_msg.ccurriculumNameIs, Expected: 'curriculumName is: '}, {Name: 'ccurrentUserIs', Actual: app_msg.ccurrentUserIs, Expected: 'currentUser is: '}, {Name: 'cadhereToCurriculumOrderRequirementIs', Actual: app_msg.cadhereToCurriculumOrderRequirementIs, Expected: 'adhereToCurriculumOrderRequirement is: '}, {Name: 'cfullyQualifiedCurriculumIndexIs', Actual: app_msg.cfullyQualifiedCurriculumIndexIs, Expected: 'fullyQualifiedCurriculumIndex is: '}, {Name: 'cfullyQualifiedCurriculumNameIs', Actual: app_msg.cfullyQualifiedCurriculumNameIs, Expected: 'fullyQualifiedCurriculumName is: '}, {Name: 'clistOfCurrentCurriculumPrerequisitesIs', Actual: app_msg.clistOfCurrentCurriculumPrerequisitesIs, Expected: 'listOfCurrentCurriculumPrerequisites is: '}, {Name: 'clistOfCurrentCurriculumPrerequisitesLengthIs', Actual: app_msg.clistOfCurrentCurriculumPrerequisitesLengthIs, Expected: 'listOfCurrentCurriculumPrerequisites.length is: '}, {Name: 'cverifyCurriculumIndexIs', Actual: app_msg.cverifyCurriculumIndexIs, Expected: 'verifyCurriculumIndex is: '}, {Name: 'cdataParsedVerifyCurriculumIndexIs', Actual: app_msg.cdataParsedVerifyCurriculumIndexIs, Expected: 'dataParsedVerifyCurriculumIndex is: '}, {Name: 'chighestLessonForCurriculumIs', Actual: app_msg.chighestLessonForCurriculumIs, Expected: 'highestLessonForCurriculum is: '}, {Name: 'cuserHighestPassingLessonNumberByCurriculumIndexIs', Actual: app_msg.cuserHighestPassingLessonNumberByCurriculumIndexIs, Expected: 'userHighestPassingLessonNumberByCurriculumIndex is: '}, {Name: 'ccurriculumSearchTermIs', Actual: app_msg.ccurriculumSearchTermIs, Expected: 'curriculumSearchTerm is: '}, {Name: 'callCurriculumNamesIs', Actual: app_msg.callCurriculumNamesIs, Expected: 'allCurriculumNames is: '}, {Name: 'callCurriculumIndicesIs', Actual: app_msg.callCurriculumIndicesIs, Expected: 'allCurriculumIndices is: '}, {Name: 'cisIntegerResultIs', Actual: app_msg.cisIntegerResultIs, Expected: 'isIntegerResult is: '}, {Name: 'cparsedCurriculumSearchTermIs', Actual: app_msg.cparsedCurriculumSearchTermIs, Expected: 'parsedCurriculumSearchTerm is: '}, {Name: 'ccurriculumLookupIndexIs', Actual: app_msg.ccurriculumLookupIndexIs, Expected: 'curriculumLookupIndex is: '}, {Name: 'cindexedCurriculumObjectIs', Actual: app_msg.cindexedCurriculumObjectIs, Expected: 'indexedCurriculumObject is: '}, {Name: 'cparsedCurriculumIndexIs', Actual: app_msg.cparsedCurriculumIndexIs, Expected: 'parsedCurriculumIndex is: '}, {Name: 'clistOfCurriculumIndicesIs', Actual: app_msg.clistOfCurriculumIndicesIs, Expected: 'listOfCurriculumIndices is: '}, {Name: 'clessonObjectIs', Actual: app_msg.clessonObjectIs, Expected: 'lessonObject is: '}, {Name: 'cusersLessonDataValue', Actual: app_msg.cusersLessonDataValue, Expected: 'usersLessonDataValue is: '}, {Name: 'ccurrentMaxScore', Actual: app_msg.ccurrentMaxScore, Expected: 'currentMaxScore is: '}, {Name: 'cindexOfMaxScore', Actual: app_msg.cindexOfMaxScore, Expected: 'indexOfMaxScore is: '}, {Name: 'callAccountUserNamesIs', Actual: app_msg.callAccountUserNamesIs, Expected: 'allAccountUserNames is: '}, {Name: 'ccurrentUserNameKeyIs', Actual: app_msg.ccurrentUserNameKeyIs, Expected: 'currentUserNameKey is: '}, // Application messages {Name: 'cinstructionsMessage00', Actual: app_msg.cinstructionsMessage00, Expected: 'Instructions to end user:'}, {Name: 'cinstructionsMessage01', Actual: app_msg.cinstructionsMessage01, Expected: 'Create an account using the createAccount command and provide your username.'}, {Name: 'cinstructionsMessage02', Actual: app_msg.cinstructionsMessage02, Expected: 'Use the login command to login to your account, no password or email required.'}, {Name: 'cinstructionsMessage03', Actual: app_msg.cinstructionsMessage03, Expected: 'Use the logout command to logout, if you want to allow another user to login, or just exit by typing exit/quit or x/q.'}, {Name: 'cinstructionsMessage04', Actual: app_msg.cinstructionsMessage04, Expected: 'All your lesson records will be stored under your account name in a local file under the resources folder.'}, {Name: 'cinstructionsMessage05', Actual: app_msg.cinstructionsMessage05, Expected: 'You can opt-out of saving your records by changing the flag: saveTypingRecords in the configuration settings file: ./src/resources/configuration/application.system.json'}, {Name: 'cinstructionsMessage06', Actual: app_msg.cinstructionsMessage06, Expected: 'You can call destroyRecords command with your account name to wipe out your typing records for good.'}, {Name: 'cinstructionsMessage07', Actual: app_msg.cinstructionsMessage07, Expected: 'The deleteAccount command will delete your account and destroy all your typing records for good.'}, {Name: 'cinstructionsMessage08', Actual: app_msg.cinstructionsMessage08, Expected: 'Once you are logged in, you can use the lessons command to display the lessons and see which lessons you have completed, and which ones are not yet started.'}, {Name: 'cinstructionsMessage09', Actual: app_msg.cinstructionsMessage09, Expected: 'If you are NOT logged in, the lessons command will simply list all the lessons available by the system.'}, {Name: 'cinstructionsMessage10', Actual: app_msg.cinstructionsMessage10, Expected: 'If you are NOT logged in, running the startLesson with a lesson number will start the lesson without saving any of the typing records.'}, {Name: 'cinstructionsMessage11', Actual: app_msg.cinstructionsMessage11, Expected: 'If you are logged in the system will only let you proceed to the next lesson if you have completed all the previous lessons with 90% success or greater.'}, {Name: 'cinstructionsMessage12', Actual: app_msg.cinstructionsMessage12, Expected: 'You can change the success limiting factor by changing the configuration flags: lessonPlanSuccessLimitingAccuracy, lessonPlanSuccessLimitingSpeed to some other value other than 90%, 70wpm.'}, {Name: 'cinstructionsMessage13', Actual: app_msg.cinstructionsMessage13, Expected: 'You can disable the success limiting factor completely and allow your users to take any lesson at any time by changing the configuration flag: enableLessonPlanLimitingFactors.'}, {Name: 'cinstructionsMessage14', Actual: app_msg.cinstructionsMessage14, Expected: 'Enter the command app?/appHelp or the command instructions to display these instructions again.'}, {Name: 'cErrorInvalidUserNameCreateAccountMessage01', Actual: app_msg.cErrorInvalidUserNameCreateAccountMessage01, Expected: 'ERROR: Invalid user name, please try again with a valid username.'}, {Name: 'cErrorInvalidUserNameCreateAccountMessage02', Actual: app_msg.cErrorInvalidUserNameCreateAccountMessage02, Expected: 'ERROR: The user account already exists, please choose a different user name and try again.'}, {Name: 'cErrorCreateAccountMessage02', Actual: app_msg.cErrorCreateAccountMessage02, Expected: 'ERROR: Newly created account was not saved, could not create the specified account: '}, {Name: 'cErrorNoUserAccountsDataLoadedMessage01', Actual: app_msg.cErrorNoUserAccountsDataLoadedMessage01, Expected: 'ERROR: No user accounts data was loaded, please ensure the accounts resources folder has accounts data. Path: '}, {Name: 'cErrorNoLessonDataLoadedMessage01', Actual: app_msg.cErrorNoLessonDataLoadedMessage01, Expected: 'ERROR: No typing lessons data was loaded, please ensure the lessons folder has lessons data. Path: '}, {Name: 'cErrorNoUserFoundDeleteAccountMessage01', Actual: app_msg.cErrorNoUserFoundDeleteAccountMessage01, Expected: 'ERROR: Cannot delete user, user does not exist.'}, {Name: 'cErrorNoDeleteAccountMessage02', Actual: app_msg.cErrorNoDeleteAccountMessage02, Expected: 'INFO: No account was deleted.'}, {Name: 'cUserDeleteAccountConfirmedMessage01', Actual: app_msg.cUserDeleteAccountConfirmedMessage01, Expected: 'WARNING: All user account data will be lost FOREVER!'}, {Name: 'cUserDeleteAccountConfirmedMessage02', Actual: app_msg.cUserDeleteAccountConfirmedMessage02, Expected: 'Are you sure you want to delete the account? (yes/y or no/n)'}, {Name: 'cErrorNoUserFoundLoginMessage01', Actual: app_msg.cErrorNoUserFoundLoginMessage01, Expected: 'ERROR: Cannot login, user does not exist.'}, {Name: 'cErrorLoginMessage02', Actual: app_msg.cErrorLoginMessage02, Expected: 'ERROR: Unable to login with the specified user: '}, {Name: 'cErrorFailureToLogOutMessage01', Actual: app_msg.cErrorFailureToLogOutMessage01, Expected: 'ERROR: Failure to logout.'}, {Name: 'cErrorStartLessonMessage01', Actual: app_msg.cErrorStartLessonMessage01, Expected: 'ERROR: No lesson number entered. Please enter a valid lesson number to execute.'}, {Name: 'cErrorStartLessonMessage02', Actual: app_msg.cErrorStartLessonMessage02, Expected: 'ERROR: Invalid lesson number entered. Please enter a valid lesson number to execute.'}, {Name: 'cErrorStartLessonMessage03', Actual: app_msg.cErrorStartLessonMessage03, Expected: 'ERROR: The lesson number entered is not available.'}, {Name: 'cErrorStartLessonMessage04', Actual: app_msg.cErrorStartLessonMessage04, Expected: 'Please enter a lesson number between 1 and: '}, {Name: 'cErrorGetIndividualLessonDataMessage01', Actual: app_msg.cErrorGetIndividualLessonDataMessage01, Expected: 'ERROR: There was an error with the lesson data, invalid lesson number: '}, {Name: 'cErrorExecuteLessonMessage01', Actual: app_msg.cErrorExecuteLessonMessage01, Expected: 'ERROR: No lesson lines for the specified lesson number: '}, {Name: 'csaveAccountDataFailureMessage01', Actual: app_msg.csaveAccountDataFailureMessage01, Expected: 'ERROR: Failure to write out the file: '}, {Name: 'cWarningStartLessonMessage01', Actual: app_msg.cWarningStartLessonMessage01, Expected: 'WARNING: You are not allowed to run this lesson,'}, {Name: 'cWarningStartLessonMessage02', Actual: app_msg.cWarningStartLessonMessage02, Expected: 'please complete the earlier lessons before proceeding.'}, {Name: 'cgenerateUserReportMessage01', Actual: app_msg.cgenerateUserReportMessage01, Expected: 'Haystacks Typing Tutor report card for user: '}, {Name: 'cgenerateUserReportMessage02', Actual: app_msg.cgenerateUserReportMessage02, Expected: 'ERROR: User is not logged in, cannot generate user report.'}, {Name: 'cgenerateUserReportMessage03', Actual: app_msg.cgenerateUserReportMessage03, Expected: 'Login to an account and try again.'}, {Name: 'cprintRecordsMessage01', Actual: app_msg.cprintRecordsMessage01, Expected: 'Haystacks Typing Tutor users report:'}, {Name: 'cErrorSetCurrentCurriculumMessage1', Actual: app_msg.cErrorSetCurrentCurriculumMessage1, Expected: 'ERROR: User must be logged in to set the current curriculum.'}, {Name: 'cErrorSetCurrentCurriculumMessage2', Actual: app_msg.cErrorSetCurrentCurriculumMessage2, Expected: 'ERROR: A name or index must be entered for the desired curriculum.'}, {Name: 'cErrorSetCurrentCurriculumMessage3', Actual: app_msg.cErrorSetCurrentCurriculumMessage3, Expected: 'ERROR: fullyQualifiedCurriculumIndex is not valid.'}, {Name: 'cErrorSetCurrentCurriculumMessage4', Actual: app_msg.cErrorSetCurrentCurriculumMessage4, Expected: 'ERROR: fullyQualifiedCurriculumName is not valid.'}, {Name: 'cErrorGetCurrentCurriculumMessage1', Actual: app_msg.cErrorGetCurrentCurriculumMessage1, Expected: 'ERROR: User must be logged in to get the current curriculum.'}, {Name: 'cErrorLookupCurriculumMessage1', Actual: app_msg.cErrorLookupCurriculumMessage1, Expected: 'ERROR: No curriculumSearchTerm specified, unable to lookup curriculum: '}, {Name: 'cErrorLookupCurriculumMessage2', Actual: app_msg.cErrorLookupCurriculumMessage2, Expected: 'ERROR: curriculumSearchTerm is invalid: '}, {Name: 'cErrorLookupCurriculumMessage3', Actual: app_msg.cErrorLookupCurriculumMessage3, Expected: 'ERROR: Invalid allCurriculumNames or curriculumIndices.'}, {Name: 'cErrorGetCurriculumNameFromIndexMessage1', Actual: app_msg.cErrorGetCurriculumNameFromIndexMessage1, Expected: 'ERROR: curriculumNamesArray was not valid, reference: getCurriculumNameFromIndex.'}, {Name: 'cErrorSetEnableLessonPlanLimitingFactors1', Actual: app_msg.cErrorSetEnableLessonPlanLimitingFactors1, Expected: 'ERROR: Setting not saved: '}, {Name: 'cErrorSetEnableLessonPlanLimitingFactors2', Actual: app_msg.cErrorSetEnableLessonPlanLimitingFactors2, Expected: 'ERROR: Invalid setting value input. Setting: '}, {Name: 'cWeFoundMatchingUserAccount', Actual: app_msg.cWeFoundMatchingUserAccount, Expected: 'We found the matching user account.'}, {Name: 'cWeFoundMatchingCurriculumIndex', Actual: app_msg.cWeFoundMatchingCurriculumIndex, Expected: 'We found the matching curriculum index.'}, {Name: 'cWeFoundMatchingLessonName', Actual: app_msg.cWeFoundMatchingLessonName, Expected: 'We found the matching lessonName.'}, {Name: 'csetCurrentCurriculumMessage1', Actual: app_msg.csetCurrentCurriculumMessage1, Expected: 'Determine if the user has completed the necessary prerequisite lessons and curriculums.'}, {Name: 'clookupCurriculumMessage1', Actual: app_msg.clookupCurriculumMessage1, Expected: 'allCurriculumNames and allCurriculumIndices is valid.'}, {Name: 'clookupCurriculumMessage2', Actual: app_msg.clookupCurriculumMessage2, Expected: 'curriculumSearchTerm is an integer.'}, {Name: 'clookupCurriculumMessage3', Actual: app_msg.clookupCurriculumMessage3, Expected: 'found a matching search index.'}, {Name: 'clookupCurriculumMessage4', Actual: app_msg.clookupCurriculumMessage4, Expected: 'curriculumSearchTerm is a string.'}, {Name: 'clookupCurriculumMessage5', Actual: app_msg.clookupCurriculumMessage5, Expected: 'found a matching search term.'}, {Name: 'cscanUserDataForCurrentCurriculumMessage1', Actual: app_msg.cscanUserDataForCurrentCurriculumMessage1, Expected: 'Incrementing the parsedCurriculumIndex, stage it for return and continue the loop.'}, {Name: 'cWarningScanUserDataForCurrentCurriculumMessage1', Actual: app_msg.cWarningScanUserDataForCurrentCurriculumMessage1, Expected: 'WARNING: parsedCurriculumIndex is not supported: '}, {Name: 'cWarningGetHighestScoringDataObjectForLessonMessage1', Actual: app_msg.cWarningGetHighestScoringDataObjectForLessonMessage1, Expected: 'WARNING: UsersLessonDataValue is an empty array, return false from function: '}, {Name: 'cWarningGetHighestScoringDataObjectForLessonMessage2', Actual: app_msg.cWarningGetHighestScoringDataObjectForLessonMessage2, Expected: 'WARNING: individualLessonName not found: '}, {Name: 'cgetHighestLessonNumberAboveAdvancementScoringLimitMessage1', Actual: app_msg.cgetHighestLessonNumberAboveAdvancementScoringLimitMessage1, Expected: 'Found a false or empty lesson, break out of the loop and return that last known good returnData value.'}, // **************************************************************************************************** // Pass-Fail user messages {Name: 'cLessonPassedMessage', Actual: app_msg.cLessonPassedMessage, Expected: 'You PASSED! YAY!!'}, {Name: 'cLessonNotPassedMessage', Actual: app_msg.cLessonNotPassedMessage, Expected: 'You did not get a passing score, please try the lesson again. Practice makes perfect!'}, {Name: 'cLessonAccuracyGoodMessage', Actual: app_msg.cLessonAccuracyGoodMessage, Expected: 'Your accuracy is good.'}, {Name: 'cLessonImproveAccuracyMessage', Actual: app_msg.cLessonImproveAccuracyMessage, Expected: 'You need to improve your accuracy, make sure you go slow at first and get each key exactly correct.'}, {Name: 'cLessonSpeedGoodMessage', Actual: app_msg.cLessonSpeedGoodMessage, Expected: 'Your speed is good.'}, {Name: 'cLessonImproveSpeedMessage', Actual: app_msg.cLessonImproveSpeedMessage, Expected: 'You need to improve your speed, it might take many times through a lesson before you gain the confidence to type fast.'}, {Name: 'cmessageLessonTimeStampIs', Actual: app_msg.cmessageLessonTimeStampIs, Expected: 'Lesson time stamp is: '}, {Name: 'cmessageTotalTimeIs', Actual: app_msg.cmessageTotalTimeIs, Expected: 'Total time is: '}, {Name: 'cmessageTotalCorrectCharacterCountIs', Actual: app_msg.cmessageTotalCorrectCharacterCountIs, Expected: 'Total correct character count is: '}, {Name: 'cmessageTotalIncorrectCharacterCountIs', Actual: app_msg.cmessageTotalIncorrectCharacterCountIs, Expected: 'Total incorrect character count is: '}, {Name: 'cmessageTotalWordsIs', Actual: app_msg.cmessageTotalWordsIs, Expected: 'Total words is: '}, {Name: 'cmessageAverageWpmIs', Actual: app_msg.cmessageAverageWpmIs, Expected: 'Average WPM is: '}, {Name: 'cmessageAverageAccuracyIs', Actual: app_msg.cmessageAverageAccuracyIs, Expected: 'Average accuracy is: '}, {Name: 'cmessageAdjustedWpmIs', Actual: app_msg.cmessageAdjustedWpmIs, Expected: 'Adjusted WPM is: '}, // **************************************************************************************************** {Name: 'cLessonInstructionsMessage01', Actual: app_msg.cLessonInstructionsMessage01, Expected: 'LESSON INSTRUCTIONS:'}, {Name: 'cLessonInstructionsMessage02', Actual: app_msg.cLessonInstructionsMessage02, Expected: 'Place your left index finger on the "F" key, and your right index finger on the "J" key.'}, {Name: 'cLessonInstructionsMessage03', Actual: app_msg.cLessonInstructionsMessage03, Expected: 'Feel for the small raised bumps on the keys.'}, {Name: 'cLessonInstructionsMessage04', Actual: app_msg.cLessonInstructionsMessage04, Expected: 'These will help you ensure your fingers are on the correct home row before you begin typing.'}, {Name: 'cLessonInstructionsMessage05', Actual: app_msg.cLessonInstructionsMessage05, Expected: 'The rest of your fingers should naturally fall to the 3 keys adjacent and inline on the same row.'}, {Name: 'cLessonInstructionsMessage06', Actual: app_msg.cLessonInstructionsMessage06, Expected: 'Left fingers should rest on the keys "D", "S", and "A".'}, {Name: 'cLessonInstructionsMessage07', Actual: app_msg.cLessonInstructionsMessage07, Expected: 'Right fingers should rest on the keys "K", "L", and ";".'}, {Name: 'cLessonInstructionsMessage08', Actual: app_msg.cLessonInstructionsMessage08, Expected: 'Sit upright in your chair, back straight, elbows at your sides.'}, {Name: 'cLessonInstructionsMessage09', Actual: app_msg.cLessonInstructionsMessage09, Expected: 'The lesson will begin when you type the first character for each line.'}, {Name: 'cLessonInstructionsMessage10', Actual: app_msg.cLessonInstructionsMessage10, Expected: 'This is a timed lesson, so the faster you go the better your score will be.'}, {Name: 'cLessonInstructionsMessage11', Actual: app_msg.cLessonInstructionsMessage11, Expected: 'However, typing errors count against your score.'}, {Name: 'cLessonInstructionsMessage12', Actual: app_msg.cLessonInstructionsMessage12, Expected: 'You must get an accuracy score of: '}, {Name: 'cLessonInstructionsMessage13', Actual: app_msg.cLessonInstructionsMessage13, Expected: 'And a speed score of at least: '}, {Name: 'cLessonInstructionsMessage14', Actual: app_msg.cLessonInstructionsMessage14, Expected: 'or higher to advance to the next lesson.'}, {Name: 'cLessonInstructionsMessage15', Actual: app_msg.cLessonInstructionsMessage15, Expected: 'A report showing your score will display after the lesson is complete.'}, {Name: 'cLessonInstructionsMessage16', Actual: app_msg.cLessonInstructionsMessage16, Expected: 'Press the "ESC" key, in the far upper left corner of the keyboard to cancel a lesson.'}, // **************************************************************************************************** {Name: 'destroyRecordsInstructionsMessage01', Actual: app_msg.destroyRecordsInstructionsMessage01, Expected: 'Before you destroy the records, make sure you exit the Haystacks Typing Tutor application,'}, {Name: 'destroyRecordsInstructionsMessage02', Actual: app_msg.destroyRecordsInstructionsMessage02, Expected: 'or the records will be resaved after you delete them.'}, {Name: 'destroyRecordsInstructionsMessage03', Actual: app_msg.destroyRecordsInstructionsMessage03, Expected: 'You can destroy all records by going to the application installed path:'}, {Name: 'destroyRecordsInstructionsMessage04', Actual: app_msg.destroyRecordsInstructionsMessage04, Expected: './src/resources/accounts/'}, {Name: 'destroyRecordsInstructionsMessage05', Actual: app_msg.destroyRecordsInstructionsMessage05, Expected: './bin/resources/accounts/'}, {Name: 'destroyRecordsInstructionsMessage06', Actual: app_msg.destroyRecordsInstructionsMessage06, Expected: 'Then delete all of the files with the .JSON file extension.'}, {Name: 'destroyRecordsInstructionsMessage07', Actual: app_msg.destroyRecordsInstructionsMessage07, Expected: 'This will remove all account data from the system forever.'}, {Name: 'destroyRecordsInstructionsMessage08', Actual: app_msg.destroyRecordsInstructionsMessage08, Expected: 'If you wish to back-up the account data,'}, {Name: 'destroyRecordsInstructionsMessage09', Actual: app_msg.destroyRecordsInstructionsMessage09, Expected: 'you can copy these files to another storage location before deleting them.'}, // **************************************************************************************************** // ASCII Keyboard map art: // **************************************************************************************************** // .--------------------------------------------------------------------. // | [ESC] [F1][F2][F3][F4][F5][F6][F7][F8][F9][F0][F10][F11][F12] o o o| // | | // | [`][1][2][3][4][5][6][7][8][9][0][-][=][_<_] [I][H][U] [N][/][*][-]| // | [/T][Q][W][E][R][T][Y][U][I][O][P][{][}] | | [D][E][D] [7][8][9]|+|| // | [CAP][A][S][D][F][G][H][J][K][L][;]['][_<-_] [4][5][6]|_|| // | [SHIFT][Z][X][C][V][B][N][M][,][.][/][SHIFT] [^] [1][2][3]| || // | [CTRL][ALT][_______SPACE________][ALT][CTRL] [<][V][>] [ 0 ][.]|_|| // `--------------------------------------------------------------------' // **************************************************************************************************** {Name: 'cKeyboardAsciMap01', Actual: app_msg.cKeyboardAsciMap01, Expected: '.--------------------------------------------------------------------.'}, {Name: 'cKeyboardAsciMap02', Actual: app_msg.cKeyboardAsciMap02, Expected: '| [ESC] [F1][F2][F3][F4][F5][F6][F7][F8][F9][F10][F11][F12] o o o|'}, {Name: 'cKeyboardAsciMap03', Actual: app_msg.cKeyboardAsciMap03, Expected: '| |'}, {Name: 'cKeyboardAsciMap04', Actual: app_msg.cKeyboardAsciMap04, Expected: '| [`][1][2][3][4][5][6][7][8][9][0][-][=][_<_] [I][H][U] [N][/][*][-]|'}, {Name: 'cKeyboardAsciMap05', Actual: app_msg.cKeyboardAsciMap05, Expected: '| [/T][Q][W][E][R][T][Y][U][I][O][P][{][}] | | [D][E][D] [7][8][9]|+||'}, {Name: 'cKeyboardAsciMap06', Actual: app_msg.cKeyboardAsciMap06, Expected: '| [CAP][A][S][D][F][G][H][J][K][L][;][\'][_<-_] [4][5][6]|_||'}, {Name: 'cKeyboardAsciMap07', Actual: app_msg.cKeyboardAsciMap07, Expected: '| [SHIFT][Z][X][C][V][B][N][M][,][.][/][SHIFT] [^] [1][2][3]| ||'}, {Name: 'cKeyboardAsciMap08', Actual: app_msg.cKeyboardAsciMap08, Expected: '| [CTRL][ALT][_______SPACE________][ALT][CTRL] [<][V][>] [ 0 ][.]|_||'}, // **************************************************************************************************** // Constants Validation {Name: 'callClientConstantsValidationDataIs', Actual: app_msg.callClientConstantsValidationDataIs, Expected: 'allClientConstantsValidationData is: '}, {Name: 'cresolvedConstantsPath_ApplicationBusinessIs', Actual: app_msg.cresolvedConstantsPath_ApplicationBusinessIs, Expected: 'resolvedConstantsPath_ApplicationBusiness is: '}, {Name: 'cresolvedConstantsPath_ApplicationCommandIs', Actual: app_msg.cresolvedConstantsPath_ApplicationCommandIs, Expected: 'resolvedConstantsPath_ApplicationCommand is: '}, {Name: 'cresolvedConstantsPath_ApplicationConfigurationIs', Actual: app_msg.cresolvedConstantsPath_ApplicationConfigurationIs, Expected: 'resolvedConstantsPath_ApplicationConfiguration is: '}, {Name: 'cresolvedConstantsPath_ApplicationConstantIs', Actual: app_msg.cresolvedConstantsPath_ApplicationConstantIs, Expected: 'resolvedConstantsPath_ApplicationConstant is: '}, {Name: 'cresolvedConstantsPath_ApplicationMessageIs', Actual: app_msg.cresolvedConstantsPath_ApplicationMessageIs, Expected: 'resolvedConstantsPath_ApplicationMessage is: '}, {Name: 'cresolvedConstantsPath_ApplicationSystemIs', Actual: app_msg.cresolvedConstantsPath_ApplicationSystemIs, Expected: 'resolvedConstantsPath_ApplicationSystem is: '}, {Name: 'cApplicationBusinessConstantsPhase1Validation', Actual: app_msg.cApplicationBusinessConstantsPhase1Validation, Expected: 'Application Business Constants Phase 1 Validation'}, {Name: 'cApplicationCommandConstantsPhase1Validation', Actual: app_msg.cApplicationCommandConstantsPhase1Validation, Expected: 'Application Command Constants Phase 1 Validation'}, {Name: 'cApplicationConfigurationConstantsPhase1Validation', Actual: app_msg.cApplicationConfigurationConstantsPhase1Validation, Expected: 'Application Configuration Constants Phase 1 Validation'}, {Name: 'cApplicationConstantsPhase1Validation', Actual: app_msg.cApplicationConstantsPhase1Validation, Expected: 'Application Constants Phase 1 Validation'}, {Name: 'cApplicationMessageConstantsPhase1Validation', Actual: app_msg.cApplicationMessageConstantsPhase1Validation, Expected: 'Application Message Constants Phase 1 Validation'}, {Name: 'cApplicationSystemConstantsPhase1Validation', Actual: app_msg.cApplicationSystemConstantsPhase1Validation, Expected: 'Application System Constants Phase 1 Validation'}, {Name: 'cApplicationBusinessConstantsPhase2Validation', Actual: app_msg.cApplicationBusinessConstantsPhase2Validation, Expected: 'Application Business Constants Phase 2 Validation'}, {Name: 'cApplicationCommandConstantsPhase2Validation', Actual: app_msg.cApplicationCommandConstantsPhase2Validation, Expected: 'Application Command Constants Phase 2 Validation'}, {Name: 'cApplicationConfigurationConstantsPhase2Validation', Actual: app_msg.cApplicationConfigurationConstantsPhase2Validation, Expected: 'Application Configuration Constants Phase 2 Validation'}, {Name: 'cApplicationConstantsPhase2Validation', Actual: app_msg.cApplicationConstantsPhase2Validation, Expected: 'Application Constants Phase 2 Validation'}, {Name: 'cApplicationMessageConstantsPhase2Validation', Actual: app_msg.cApplicationMessageConstantsPhase2Validation, Expected: 'Application Message Constants Phase 2 Validation'}, {Name: 'cApplicationSystemConstantsPhase2Validation', Actual: app_msg.cApplicationSystemConstantsPhase2Validation, Expected: 'Application System Constants Phase 2 Validation'}, {Name: 'capplicationMessage01', Actual: app_msg.capplicationMessage01, Expected: 'BEGIN main program loop'}, {Name: 'capplicationMessage02', Actual: app_msg.capplicationMessage02, Expected: 'BEGIN command parser'}, {Name: 'capplicationMessage03', Actual: app_msg.capplicationMessage03, Expected: 'END command parser'}, {Name: 'capplicationMessage04', Actual: app_msg.capplicationMessage04, Expected: 'END main program loop'}, {Name: 'capplicationMessage05', Actual: app_msg.capplicationMessage05, Expected: 'Exiting Haystacks-TT application'} ];