439 lines
11 KiB
Go
439 lines
11 KiB
Go
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.")
|
|
}
|
|
}
|