/**
* Contains unit tests.
*
* @module Test_unit_
*/
class UnitTests_ {
/**
* Runs all unit tests and logs the results to the console.
*/
static runAllUnitTests() {
let tests = [
UnitTests_.test_decodeFleetRank_returnsCorrectFleetRank_,
UnitTests_.test_decodeFleetRank_returnsNullOnInvalidValues_,
UnitTests_.test_decodeTimestamp_returnsCorrectDate_,
UnitTests_.test_decodeTimestamp_returnsNullOnFalsyInput_,
UnitTests_.test_convertDateToParameter_returnsFormattedStringOnDateInput_,
UnitTests_.test_convertDateToParameter_returnsInputOnStringInput_,
UnitTests_.test_convertDateToParameter_returnsNullOnNonStringNonDateInput_,
UnitTests_.test_constructParamsObject_returnsCorrectObject_,
UnitTests_.test_padInt_returnsCorrectResult_,
];
Tests_.runTests_(tests);
}
static test_padInt_returnsCorrectResult_() {
let testCases = [
{input: {integer: 8, padCount: 0}, expectedResult: "8"},
{input: {integer: 8, padCount: 1}, expectedResult: "8"},
{input: {integer: 8, padCount: 2}, expectedResult: "08"},
{input: {integer: 8, padCount: 10}, expectedResult: "0000000008"},
]
testCases.forEach(testCase => {
let input = JSON.stringify(testCase.input);
let expectedResult = JSON.stringify(testCase.expectedResult);
let result = padInt_(testCase.input.integer, testCase.input.padCount);
Tests_.assert_objects_equal_(result, testCase.expectedResult, "Input: " + input + ", expected output: " + expectedResult + ", actual output: " + JSON.stringify(result));
});
}
static test_constructParamsObject_returnsCorrectObject_() {
let testCases = [
{
input: {
fromDate: undefined,
toDate: undefined,
interval: undefined,
desc: undefined,
skip: undefined,
take: undefined,
},
expectedResult: {}
},
{input : {fromDate: "2024-01-01"}, expectedResult: {fromDate: "2024-01-01"}},
{input : {fromDate: newDate_(2024, 0, 1)}, expectedResult: {fromDate: "2024-01-01 00:00:00"}},
{input : {toDate: "2024-01-01"}, expectedResult: {toDate: "2024-01-01"}},
{input : {toDate: newDate_(2024, 0, 1)}, expectedResult: {toDate: "2024-01-01 00:00:00"}},
{input : {desc: false}, expectedResult: {desc: false}},
{input : {desc: true}, expectedResult: {desc: true}},
{input : {interval: Interval.DAILY}, expectedResult: {interval: "day"}},
{input : {interval: "month"}, expectedResult: {interval: "month"}},
{input : {skip: 0}, expectedResult: {skip: 0}},
{input : {skip: "0"}, expectedResult: {skip: "0"}},
{input : {take: 100}, expectedResult: {take: 100}},
{input : {take: "100"}, expectedResult: {take: "100"}},
{
input : {
fromDate: "2024-01-01",
toDate: "2024-01-01",
interval: Interval.DAILY,
desc: false,
skip: 0,
take: 100,
},
expectedResult:
{
fromDate: "2024-01-01",
toDate: "2024-01-01",
interval: "day",
desc: false,
skip: 0,
take: 100,
},
},
]
testCases.forEach(testCase => {
let input = JSON.stringify(testCase.input);
let expectedResult = JSON.stringify(testCase.expectedResult);
let result = constructParamsObject_(testCase.input.fromDate, testCase.input.toDate, testCase.input.interval, testCase.input.desc, testCase.input.skip, testCase.input.take);
Tests_.assert_objects_equal_(result, testCase.expectedResult, "Input: " + input + ", expected output: " + expectedResult + ", actual output: " + JSON.stringify(result));
});
}
static test_convertDateToParameter_returnsFormattedStringOnDateInput_() {
let testCases = [
{input: new Date(PSS_START_DATE.getTime()), expectedResult: "2016-01-06 00:00:00"},
{input: newDate_(2024, 8, 14), expectedResult: "2024-09-14 00:00:00"},
{input: newDate_(2024, 8, 14, 23, 45, 56), expectedResult: "2024-09-14 23:45:56"},
]
testCases.forEach(testCase => {
let result = convertDateToParameter_(testCase.input);
Tests_.assert_strictly_equal_(result, testCase.expectedResult, "Input: " + testCase.input + ", expected output: " + testCase.expectedResult + ", actual output: " + result);
});
}
static test_convertDateToParameter_returnsInputOnStringInput_() {
let testCases = [
{input: "", expectedResult: ""},
{input: "2024-09-14 00:00:00", expectedResult: "2024-09-14 00:00:00"},
{input: "random text", expectedResult: "random text"},
]
testCases.forEach(testCase => {
let result = convertDateToParameter_(testCase.input);
Tests_.assert_strictly_equal_(result, testCase.expectedResult, "Input: " + testCase.input + ", expected output: " + testCase.expectedResult + ", actual output: " + result);
});
}
static test_convertDateToParameter_returnsNullOnNonStringNonDateInput_() {
let testCases = [
{input: true},
{input: false},
{input: 8},
{input: 8.1},
{input: {}},
{input: {key: "value"}},
{input: []},
]
testCases.forEach(testCase => {
let result = convertDateToParameter_(testCase.input);
Tests_.assert_strictly_equal_(result, null, "Input: " + testCase.input + ", expected output: " + null + ", actual output: " + result);
});
}
static test_decodeFleetRank_returnsCorrectFleetRank_() {
let testCases = [
{input: -1, expectedResult: AllianceMembership.NONE},
{input: 0, expectedResult: AllianceMembership.FLEET_ADMIRAL},
{input: 1, expectedResult: AllianceMembership.VICE_ADMIRAL},
{input: 2, expectedResult: AllianceMembership.COMMANDER},
{input: 3, expectedResult: AllianceMembership.MAJOR},
{input: 4, expectedResult: AllianceMembership.LIEUTENANT},
{input: 5, expectedResult: AllianceMembership.ENSIGN},
{input: 6, expectedResult: AllianceMembership.CANDIDATE},
]
testCases.forEach(testCase => {
let result = decodeFleetRank_(testCase.input);
Tests_.assert_strictly_equal_(result, testCase.expectedResult, "Input: " + testCase.input + ", expected output: " + testCase.expectedResult + ", actual output: " + result);
});
}
static test_decodeFleetRank_returnsNullOnInvalidValues_() {
let testCases = [
{input: -2},
{input: 7},
]
testCases.forEach(testCase => {
let result = decodeFleetRank_(testCase.input);
Tests_.assert_strictly_equal_(result, null, "Input: " + testCase.input + ", expected output: " + null + ", actual output: " + result);
});
}
static test_decodeTimestamp_returnsCorrectDate_() {
let testCases = [
{input: 0, expectedResult: new Date(PSS_START_DATE.getTime())},
{input: 60, expectedResult: new Date(PSS_START_DATE.getTime() + 60000)},
{input: 86400, expectedResult: new Date(PSS_START_DATE.getTime() + 86400000)},
]
testCases.forEach(testCase => {
let result = decodeTimestamp_(testCase.input);
Tests_.assert_equal_(result.getTime(), testCase.expectedResult.getTime(), "Input: " + testCase.input + ", expected output: " + testCase.expectedResult + ", actual output: " + result);
});
}
static test_decodeTimestamp_returnsNullOnFalsyInput_() {
let testCases = [
{input: null},
{input: undefined},
{input: ""},
{input: NaN},
{input: false},
]
testCases.forEach(testCase => {
let result = decodeTimestamp_(testCase.timestamp);
Tests_.assert_equal_(result, null, "Input: " + testCase.timestamp + ", expected output: " + null + ", actual output: " + result);
});
}
}