package helpers_test import "seekia/internal/helpers" import "testing" import "slices" func TestTimeFunctions(t *testing.T){ minuteUnix := int64(60) hourUnix := int64(3600) dayUnix := int64(86400) weekUnix := int64(604800) monthUnix := int64(2629743) yearUnix := int64(31556926) durationTranslated, err := helpers.ConvertUnixTimeDurationToUnitsTimeTranslated(hourUnix, true) if (err != nil) { t.Fatalf("Failed to get duration units time translated: " + err.Error()) } if (durationTranslated != "1 Hour") { t.Fatalf("Invalid units time translated: " + durationTranslated) } durationTranslated, err = helpers.ConvertUnixTimeDurationToUnitsTimeTranslated(hourUnix + minuteUnix*2, true) if (err != nil) { t.Fatalf("Failed to get duration units time translated: " + err.Error()) } if (durationTranslated != "1 Hour and 2 Minutes") { t.Fatalf("Invalid units time translated: " + durationTranslated) } durationTranslated, err = helpers.ConvertUnixTimeDurationToUnitsTimeTranslated(dayUnix + minuteUnix*2, true) if (err != nil) { t.Fatalf("Failed to get duration units time translated: " + err.Error()) } if (durationTranslated != "1 Day") { t.Fatalf("Invalid units time translated: " + durationTranslated) } durationTranslated, err = helpers.ConvertUnixTimeDurationToUnitsTimeTranslated(weekUnix + dayUnix*2, true) if (err != nil) { t.Fatalf("Failed to get duration units time translated: " + err.Error()) } if (durationTranslated != "1 Week and 2 Days") { t.Fatalf("Invalid units time translated: " + durationTranslated) } durationTranslated, err = helpers.ConvertUnixTimeDurationToUnitsTimeTranslated(monthUnix + dayUnix*2, true) if (err != nil) { t.Fatalf("Failed to get duration units time translated: " + err.Error()) } if (durationTranslated != "1 Month and 2 Days") { t.Fatalf("Invalid units time translated: " + durationTranslated) } durationTranslated, err = helpers.ConvertUnixTimeDurationToUnitsTimeTranslated(monthUnix + weekUnix, true) if (err != nil) { t.Fatalf("Failed to get duration units time translated: " + err.Error()) } if (durationTranslated != "1 Month and 1 Week") { t.Fatalf("Invalid units time translated: " + durationTranslated) } durationTranslated, err = helpers.ConvertUnixTimeDurationToUnitsTimeTranslated(monthUnix + weekUnix*2, true) if (err != nil) { t.Fatalf("Failed to get duration units time translated: " + err.Error()) } if (durationTranslated != "1 Month and 2 Weeks") { t.Fatalf("Invalid units time translated: " + durationTranslated) } durationTranslated, err = helpers.ConvertUnixTimeDurationToUnitsTimeTranslated(yearUnix + weekUnix*2, true) if (err != nil) { t.Fatalf("Failed to get duration units time translated: " + err.Error()) } if (durationTranslated != "1 Year and 2 Weeks") { t.Fatalf("Invalid units time translated: " + durationTranslated) } durationTranslated, err = helpers.ConvertUnixTimeDurationToUnitsTimeTranslated(10 * yearUnix + weekUnix*2, true) if (err != nil) { t.Fatalf("Failed to get duration units time translated: " + err.Error()) } if (durationTranslated != "10 Years") { t.Fatalf("Invalid units time translated: " + durationTranslated) } } func TestIntToStringWithCommas(t *testing.T){ num := 1 result := helpers.ConvertIntToStringWithCommas(num) if (result != "1"){ t.Fatalf("Int to string with commas conversion failed") } num = 12 result = helpers.ConvertIntToStringWithCommas(num) if (result != "12"){ t.Fatalf("Int to string with commas conversion failed.") } num = 123 result = helpers.ConvertIntToStringWithCommas(num) if (result != "123"){ t.Fatalf("Int to string with commas conversion failed.") } num = 1234 result = helpers.ConvertIntToStringWithCommas(num) if (result != "1,234"){ t.Fatalf("Int to string with commas conversion failed.") } num = 12345 result = helpers.ConvertIntToStringWithCommas(num) if (result != "12,345"){ t.Fatalf("Int to string with commas conversion failed.") } num = 123456 result = helpers.ConvertIntToStringWithCommas(num) if (result != "123,456"){ t.Fatalf("Int to string with commas conversion failed.") } num = 1234567 result = helpers.ConvertIntToStringWithCommas(num) if (result != "1,234,567"){ t.Fatalf("Int to string with commas conversion failed.") } num = 12345678 result = helpers.ConvertIntToStringWithCommas(num) if (result != "12,345,678"){ t.Fatalf("Int to string with commas conversion failed.") } num = 123456789 result = helpers.ConvertIntToStringWithCommas(num) if (result != "123,456,789"){ t.Fatalf("Int to string with commas conversion failed.") } num = 1234567891 result = helpers.ConvertIntToStringWithCommas(num) if (result != "1,234,567,891"){ t.Fatalf("Int to string with commas conversion failed.") } num = 12345678912 result = helpers.ConvertIntToStringWithCommas(num) if (result != "12,345,678,912"){ t.Fatalf("Int to string with commas conversion failed.") } num = 123456789123 result = helpers.ConvertIntToStringWithCommas(num) if (result != "123,456,789,123"){ t.Fatalf("Int to string with commas conversion failed.") } } func TestRandomNumberFunctions(t *testing.T){ min := 1 max := 100 for i:=0; i < 100; i++{ randomNumber := helpers.GetRandomIntWithinRange(min, max) if (randomNumber < min || randomNumber > max){ t.Fatalf("Failed to get random number between two numbers.") } } min = -10 max = -5 for i:=0; i < 100; i++{ randomNumber := helpers.GetRandomIntWithinRange(min, max) if (randomNumber < min || randomNumber > max){ t.Fatalf("Failed to get random number between two numbers.") } } minInt64 := int64(0) maxInt64 := int64(100) for i:=0; i < 100; i++{ randomNumber := helpers.GetRandomInt64WithinRange(minInt64, maxInt64) if (randomNumber < minInt64 || randomNumber > maxInt64){ t.Fatalf("Failed to get random number between two numbers.") } } minInt64 = int64(-30) maxInt64 = int64(50) for i:=0; i < 100; i++{ randomNumber := helpers.GetRandomInt64WithinRange(minInt64, maxInt64) if (randomNumber < minInt64 || randomNumber > maxInt64){ t.Fatalf("Failed to get random number between two numbers.") } } } func TestGetRandomSliceElementFunction(t *testing.T){ testListA := []string{"A"} result, err := helpers.GetRandomItemFromList(testListA) if (err != nil) { t.Fatalf("Failed to get random item from string list: " + err.Error()) } if (result != "A"){ t.Fatalf("Failed to get random item from string list- Invalid result: " + result) } testListB := []string{"A", "B", "C"} result, err = helpers.GetRandomItemFromList(testListB) if (err != nil) { t.Fatalf("Failed to get random item from string list: " + err.Error()) } isValid := slices.Contains(testListB, result) if (isValid == false){ t.Fatalf("Failed to get random item from string list- Invalid result: " + result) } } func TestSliceFunctions(t *testing.T){ testListA := []string{"1", "2"} newListA, err := helpers.DeleteIndexFromStringList(testListA, 0) if (err != nil) { t.Fatalf("Failed to delete index from string list: " + err.Error()) } expectedListA := []string{"2"} areEqual := slices.Equal(newListA, expectedListA) if (areEqual == false){ t.Fatalf("Failed to delete index from string list.") } testListB := []string{"1", "2", "3", "4"} newListB, err := helpers.DeleteIndexFromStringList(testListB, 3) if (err != nil) { t.Fatalf("Failed to delete index from string list: " + err.Error()) } expectedListB := []string{"1", "2", "3"} areEqual = slices.Equal(newListB, expectedListB) if (areEqual == false){ t.Fatalf("Failed to delete index from string list.") } testListC := []string{"1"} newListC, err := helpers.DeleteIndexFromStringList(testListC, 0) if (err != nil) { t.Fatalf("Failed to delete index from string list: " + err.Error()) } if (len(newListC) != 0){ t.Fatalf("Failed to delete index from string list.") } testListD := []string{"1", "2", "3", "4"} newListD, err := helpers.DeleteIndexFromStringList(testListD, 0) if (err != nil) { t.Fatalf("Failed to delete index from string list: " + err.Error()) } expectedListD := []string{"2", "3", "4"} areEqual = slices.Equal(newListD, expectedListD) if (areEqual == false){ t.Fatalf("Failed to delete index from string list.") } } func TestNumberProportionalScaling(t *testing.T){ result, err := helpers.ScaleNumberProportionally(true, 50, 0, 100, 0, 50) if (err != nil){ t.Fatalf("ScaleNumberProportionally failed: " + err.Error()) } if (result != 25){ t.Fatalf("ScaleNumberProportionally failed test 1.") } result, err = helpers.ScaleNumberProportionally(true, 25, 0, 100, 0, 200) if (err != nil){ t.Fatalf("ScaleNumberProportionally failed: " + err.Error()) } if (result != 50){ t.Fatalf("ScaleNumberProportionally failed test 2.") } result, err = helpers.ScaleNumberProportionally(false, 25, 0, 100, 0, 200) if (err != nil){ t.Fatalf("ScaleNumberProportionally failed: " + err.Error()) } if (result != 150){ t.Fatalf("ScaleNumberProportionally failed test 3.") } result, err = helpers.ScaleNumberProportionally(true, 1, 0, 10, 0, 200) if (err != nil){ t.Fatalf("ScaleNumberProportionally failed: " + err.Error()) } if (result != 20){ t.Fatalf("ScaleNumberProportionally failed test 4.") } result, err = helpers.ScaleNumberProportionally(true, -50, -100, 0, 0, 200) if (err != nil){ t.Fatalf("ScaleNumberProportionally failed: " + err.Error()) } if (result != 100){ t.Fatalf("ScaleNumberProportionally failed test 5.") } result, err = helpers.ScaleNumberProportionally(true, -25, -100, 0, 0, 200) if (err != nil){ t.Fatalf("ScaleNumberProportionally failed: " + err.Error()) } if (result != 150){ t.Fatalf("ScaleNumberProportionally failed test 6.") } result, err = helpers.ScaleNumberProportionally(true, 50, 0, 100, 0, 2) if (err != nil){ t.Fatalf("ScaleNumberProportionally failed: " + err.Error()) } if (result != 1){ t.Fatalf("ScaleNumberProportionally failed test 7.") } result, err = helpers.ScaleNumberProportionally(true, 10, 0, 100, 5, 25) if (err != nil){ t.Fatalf("ScaleNumberProportionally failed: " + err.Error()) } if (result != 7){ t.Fatalf("ScaleNumberProportionally failed test 8.") } result, err = helpers.ScaleNumberProportionally(true, 100, 0, 100, 2, 22) if (err != nil){ t.Fatalf("ScaleNumberProportionally failed: " + err.Error()) } if (result != 22){ t.Fatalf("ScaleNumberProportionally failed test 9.") } result, err = helpers.ScaleNumberProportionally(false, 0, 0, 100, 2, 22) if (err != nil){ t.Fatalf("ScaleNumberProportionally failed: " + err.Error()) } if (result != 22){ t.Fatalf("ScaleNumberProportionally failed test 10.") } } func TestSplitListIntoSublists(t *testing.T){ inputList := make([]string, 0, 100) for i := 0; i < 100; i++{ item := helpers.ConvertIntToString(i+1) inputList = append(inputList, item) } sublistsList, err := helpers.SplitListIntoSublists(inputList, 10) if (err != nil) { t.Fatalf("Failed to split string list into sublists: " + err.Error()) } totalElements := 0 for _, element := range sublistsList{ elementsInSublist := len(element) totalElements += elementsInSublist if (elementsInSublist != 10){ t.Fatalf("Failed to split string list into sublists: invalid sublist length.") } } if (totalElements != 100){ t.Fatalf("Failed to split string list into sublists: invalid sublist elements length.") } }