Files
tmuxifier/tests/lib/util/vercomp_test.sh

133 lines
2.8 KiB
Bash
Executable File

#!/usr/bin/env bash
# Load the util.sh library under test
source "${_root_dir}/lib/util.sh"
#
# vercomp() tests
#
# Return values:
# 0 = versions are equal
# 1 = first version is greater
# 2 = first version is less
#
# Equal versions
function test_vercomp_returns_0_for_identical_versions() {
vercomp "1.0.0" "1.0.0"
assert_exit_code "0"
}
function test_vercomp_returns_0_for_identical_two_part_versions() {
vercomp "1.2" "1.2"
assert_exit_code "0"
}
function test_vercomp_returns_0_for_identical_single_part_versions() {
vercomp "5" "5"
assert_exit_code "0"
}
function test_vercomp_returns_0_when_trailing_zeros_differ() {
vercomp "1.0" "1.0.0"
assert_exit_code "0"
}
function test_vercomp_returns_0_when_trailing_zeros_differ_reversed() {
vercomp "1.0.0" "1.0"
assert_exit_code "0"
}
function test_vercomp_returns_0_for_equal_versions_with_many_parts() {
vercomp "1.2.3.4.5" "1.2.3.4.5"
assert_exit_code "0"
}
# First version greater (returns 1)
function test_vercomp_returns_1_when_major_is_greater() {
vercomp "2.0.0" "1.0.0"
assert_exit_code "1"
}
function test_vercomp_returns_1_when_minor_is_greater() {
vercomp "1.2.0" "1.1.0"
assert_exit_code "1"
}
function test_vercomp_returns_1_when_patch_is_greater() {
vercomp "1.0.2" "1.0.1"
assert_exit_code "1"
}
function test_vercomp_returns_1_when_first_has_more_parts_and_greater() {
vercomp "1.0.1" "1.0"
assert_exit_code "1"
}
function test_vercomp_returns_1_for_double_digit_greater() {
vercomp "1.10.0" "1.9.0"
assert_exit_code "1"
}
function test_vercomp_returns_1_for_large_version_numbers() {
vercomp "100.200.300" "100.200.299"
assert_exit_code "1"
}
# First version less (returns 2)
function test_vercomp_returns_2_when_major_is_less() {
vercomp "1.0.0" "2.0.0"
assert_exit_code "2"
}
function test_vercomp_returns_2_when_minor_is_less() {
vercomp "1.1.0" "1.2.0"
assert_exit_code "2"
}
function test_vercomp_returns_2_when_patch_is_less() {
vercomp "1.0.1" "1.0.2"
assert_exit_code "2"
}
function test_vercomp_returns_2_when_second_has_more_parts_and_greater() {
vercomp "1.0" "1.0.1"
assert_exit_code "2"
}
function test_vercomp_returns_2_for_double_digit_less() {
vercomp "1.9.0" "1.10.0"
assert_exit_code "2"
}
function test_vercomp_returns_2_for_large_version_numbers() {
vercomp "100.200.299" "100.200.300"
assert_exit_code "2"
}
# Edge cases
function test_vercomp_returns_0_for_empty_strings() {
vercomp "" ""
assert_exit_code "0"
}
function test_vercomp_returns_0_for_zeros() {
vercomp "0" "0"
assert_exit_code "0"
}
function test_vercomp_returns_0_for_zero_and_zero_zero() {
vercomp "0" "0.0"
assert_exit_code "0"
}
function test_vercomp_handles_leading_zeros_in_parts() {
vercomp "1.01" "1.1"
assert_exit_code "0"
}
function test_vercomp_handles_leading_zeros_comparison() {
vercomp "1.02" "1.1"
assert_exit_code "1"
}