valid = [
"0",
"1a",
"<1",
"<=1",
"=1",
"=1*",
"~1",
">=1",
">1",
"18446744073709551615",
"1.18446744073709551615",
"1.2.18446744073709551615",
"1_p18446744073709551615",
"1-r18446744073709551615",
]
invalid = [
"",
".",
"-1",
".1",
"1.",
"a",
"a1",
"1a-1",
"1a-1a",
"1aa",
"1.a",
"1_a",
"1a.2",
"1..2",
"~2-r1",
"18446744073709551616",
"1.18446744073709551616",
"1.2.18446744073709551616",
"1_p18446744073709551616",
"1-r18446744073709551616",
]
compares = [
"0 == 0",
"0 != 1",
"0 == 0-r0",
"1 == 01",
"01 == 001",
"1.00 == 1.0",
"1.0100 == 1.010",
"01.01 == 1.01",
"0001.1 == 1.1",
"1.2 == 001.2",
"1.0.2 == 1.0.2-r0",
"1.0.2-r0 == 1.000.2",
"1.000.2 == 1.00.2-r0",
"0-r0 == 0-r00",
"0_beta01 == 0_beta001",
"1.2_pre08-r09 == 1.2_pre8-r9",
"1.010.02 != 1.01.2",
"0.1 < 0.11",
"0.01 > 0.001",
"1.0 > 1",
"1.0_alpha > 1_alpha",
"1.0_alpha > 1",
"1.0_alpha < 1.0",
"0a < 0b",
"1.1z > 1.1a",
"1.010.1r_p < 1.0100.1s_beta",
"1_alpha < 1_beta",
"1_beta < 1_pre",
"1_pre < 1_rc",
"1_rc < 1",
"1 < 1_p",
"1.2.3_alpha < 1.2.3",
"1.2.3_beta < 1.2.3",
"1.2.3_pre < 1.2.3",
"1.2.3_rc < 1.2.3",
"1.2.3_p > 1.2.3",
"0_alpha1 < 0_alpha2",
"0_alpha2_beta1 > 0_alpha1_beta2",
"0_alpha2-r1 > 0_alpha1-r2",
"0_p1 < 0_p2",
"1_alpha < 1_alpha_p",
"1_alpha > 1_alpha_beta_p",
"1_alpha_beta < 1_alpha_beta_p",
"1_alpha_beta > 1_alpha_beta_pre",
"1_alpha1 > 1_alpha_beta2",
"0-r1 > 0",
"0-r2 > 0-r1",
"1.0.2_pre01-r2 > 1.00.2_pre001-r1",
]
intersects = [
{ vals = ["0", "00", "0-r0", "0-r00"], status = true },
{ vals = ["1.0.2", "1.0.2-r0", "1.000.2"], status = true },
{ vals = ["0", "1", "2"], status = false },
{ vals = ["1.1", "1.10", "1.100"], status = false },
{ vals = ["0", "<0"], status = false },
{ vals = ["0", "<=0"], status = true },
{ vals = ["0", "=0"], status = true },
{ vals = ["0", "=0*"], status = true },
{ vals = ["0", "~0"], status = true },
{ vals = ["0", ">=0"], status = true },
{ vals = ["0", ">0"], status = false },
{ vals = ["<0", "<100"], status = true },
{ vals = ["<0", "<=100"], status = true },
{ vals = [">0", ">100"], status = true },
{ vals = [">0", ">=100"], status = true },
{ vals = ["~1", "~1.0"], status = false },
{ vals = ["~1.0.2", "~1.000.2"], status = true },
{ vals = ["=1*", "=1.0*"], status = true },
{ vals = ["=1.1*", "=1.0*"], status = false },
{ vals = ["=1*", "~1.0"], status = true },
{ vals = ["=1.1*", "~1.0"], status = false },
{ vals = [">0", "<1"], status = true },
{ vals = [">0", "<=1"], status = true },
{ vals = [">=0", "<1"], status = true },
{ vals = [">=0", "<=1"], status = true },
{ vals = [">=0-r1", "<=0-r1"], status = true },
{ vals = ["<0", ">1"], status = false },
{ vals = ["<0", ">=1"], status = false },
{ vals = ["<=0", ">1"], status = false },
{ vals = ["<=0", ">=1"], status = false },
{ vals = [">0-r1", "<0-r1"], status = false },
{ vals = [">1", "<1"], status = false },
{ vals = [">1", "<=1"], status = false },
{ vals = [">=1", "<1"], status = false },
{ vals = [">1", "~1"], status = true },
{ vals = [">=1", "~1"], status = true },
{ vals = ["<1", "~1"], status = false },
{ vals = ["<=1", "~1"], status = true },
{ vals = [">1-r1", "~1"], status = true },
{ vals = [">=1-r1", "~1"], status = true },
{ vals = ["<1-r1", "~1"], status = true },
{ vals = ["<=1-r1", "~1"], status = true },
{ vals = [">1", "=1*"], status = true },
{ vals = [">=1", "=1*"], status = true },
{ vals = ["<1", "=1*"], status = true },
{ vals = ["<=1", "=1*"], status = true },
{ vals = [">1-r1", "=1*"], status = true },
{ vals = [">=1-r1", "=1*"], status = true },
{ vals = ["<1-r1", "=1*"], status = true },
{ vals = ["<=1-r1", "=1*"], status = true },
{ vals = ["<1", "=1-r1*"], status = false },
{ vals = ["~1", "=1a*"], status = false },
{ vals = ["~1.1", "=1a*"], status = false },
{ vals = ["~1a", "=1a*"], status = true },
{ vals = ["~1a", "=1b*"], status = false },
{ vals = ["~1a", "=1.1*"], status = false },
{ vals = ["~1a", "=1_alpha*"], status = false },
{ vals = ["~1", "=1_p*"], status = false },
{ vals = ["~1.1", "=1_p*"], status = false },
{ vals = ["~1_p", "=1_p*"], status = true },
{ vals = ["~1_rc", "=1_p*"], status = false },
{ vals = ["~1_p", "=1.1*"], status = false },
{ vals = ["~1_p", "=1-r1*"], status = false },
{ vals = ["~1_rc1_p", "=1_rc_p*"], status = false },
{ vals = ["~1_p1", "=1_p2*"], status = false },
{ vals = ["~1_p", "=1_p1*"], status = false },
{ vals = ["~1_p1", "=1_p*"], status = true },
{ vals = [">=1.1-r1", "=1-r1*"], status = false },
{ vals = [">=1-r12", "=1-r1*"], status = true },
{ vals = [">=1-r1", "=1-r2*"], status = true },
{ vals = [">=1", "=1-r1*"], status = true },
{ vals = [">=1-r1", "=1*"], status = true },
]
sorting = [
{ sorted = ["0", "00", "0-r0", "0-r00"], equal = true },
{ sorted = ["1-r1", "01-r01", "001-r1", "1-r001"], equal = true },
{ sorted = ["1.0.2", "1.0.2-r0", "1.000.2"], equal = true },
{ sorted = ["0", "1", "2"], equal = false },
{ sorted = ["1.1", "1.10", "1.100"], equal = false },
{ sorted = ["1a", "1b", "1y", "1z"], equal = false },
{ sorted = ["1_alpha", "1_beta", "1_pre", "1_rc", "1_p"], equal = false },
{ sorted = ["1_p0", "1_p1", "1_p2"], equal = false },
{ sorted = ["1-r0", "1-r1", "1-r2"], equal = false },
{ sorted = ["<1", "<=1", "=1", "=1*", "~1", ">=1", ">1"], equal = false },
{ sorted = [
"1.2.2b_beta2-r2", "2.1.1a_alpha1-r1",
"2.1.1b_beta2-r2", "2.2.1a_alpha1-r1",
"2.2.1b_beta2-r2", "2.2.2a_alpha1-r1",
"2.2.2a_beta2-r2", "2.2.2b_alpha1-r1",
"2.2.2b_alpha2-r2", "2.2.2b_beta1-r1",
"2.2.2b_beta1-r2", "2.2.2b_beta2-r1",
"2.2.2b_beta2-r1", "2.2.2b_beta2-r2",
], equal = false },
]
hashing = [
{ versions = ["0", "0-r0", "0-r00"], equal = true },
{ versions = ["1-r10", "1-r010"], equal = true },
{ versions = ["1", "01", "001"], equal = true },
{ versions = ["1.0", "1.00"], equal = true },
{ versions = ["0_beta1", "0_beta01", "0_beta001"], equal = true },
{ versions = ["1.0.2", "1.0.2-r0", "1.000.2", "1.00.2-r0"], equal = true },
{ versions = ["0", "1"], equal = false },
{ versions = ["1-r1", "1-r10", "1-r100"], equal = false },
{ versions = ["1.01.2", "1.010.02"], equal = false },
{ versions = ["1.0", "1"], equal = false },
{ versions = ["0.1", "0.01", "0.001"], equal = false },
]