pkg.re/essentialkaos/ek.v10@v12.41.0+incompatible/sortutil/sortutil_test.go (about) 1 package sortutil 2 3 // ////////////////////////////////////////////////////////////////////////////////// // 4 // // 5 // Copyright (c) 2022 ESSENTIAL KAOS // 6 // Apache License, Version 2.0 <https://www.apache.org/licenses/LICENSE-2.0> // 7 // // 8 // ////////////////////////////////////////////////////////////////////////////////// // 9 10 import ( 11 "testing" 12 13 . "pkg.re/essentialkaos/check.v1" 14 ) 15 16 // ////////////////////////////////////////////////////////////////////////////////// // 17 18 type SortSuite struct{} 19 20 // ////////////////////////////////////////////////////////////////////////////////// // 21 22 func Test(t *testing.T) { TestingT(t) } 23 24 // ////////////////////////////////////////////////////////////////////////////////// // 25 26 var _ = Suite(&SortSuite{}) 27 28 // ////////////////////////////////////////////////////////////////////////////////// // 29 30 func (s *SortSuite) TestVersionSorting(c *C) { 31 v1 := []string{"1", "2.1", "2", "2.3.4", "1.3", "1.6.5", "2.3.3", "14.0", "6"} 32 33 Versions(v1) 34 35 c.Assert(v1, DeepEquals, []string{"1", "1.3", "1.6.5", "2", "2.1", "2.3.3", "2.3.4", "6", "14.0"}) 36 37 v2 := []string{"1-2", "2", "2.2.3", "2.2.3", "1"} 38 39 Versions(v2) 40 41 c.Assert(v2, DeepEquals, []string{"1", "1-2", "2", "2.2.3", "2.2.3"}) 42 } 43 44 func (s *SortSuite) TestStringSorting(c *C) { 45 s1 := []string{"Apple", "auto", "image", "Monica", "7", "flower", "moon"} 46 s2 := []string{"Apple", "auto", "image", "Monica", "7", "flower", "moon"} 47 48 Strings(s1, false) 49 Strings(s2, true) 50 51 c.Assert(s1, DeepEquals, []string{"7", "Apple", "Monica", "auto", "flower", "image", "moon"}) 52 c.Assert(s2, DeepEquals, []string{"7", "Apple", "auto", "flower", "image", "Monica", "moon"}) 53 } 54 55 func (s *SortSuite) TestNaturalSorting(c *C) { 56 s1 := []string{"abc5", "abc1", "abc01", "ab", "abc10", "abc2"} 57 58 StringsNatural(s1) 59 60 c.Assert(s1, DeepEquals, []string{"ab", "abc1", "abc01", "abc2", "abc5", "abc10"}) 61 62 c.Assert(NaturalLess("0", "00"), Equals, true) 63 c.Assert(NaturalLess("00", "0"), Equals, false) 64 c.Assert(NaturalLess("aa", "ab"), Equals, true) 65 c.Assert(NaturalLess("ab", "abc"), Equals, true) 66 c.Assert(NaturalLess("abc", "ad"), Equals, true) 67 c.Assert(NaturalLess("ab1", "ab2"), Equals, true) 68 c.Assert(NaturalLess("ab1c", "ab1c"), Equals, false) 69 c.Assert(NaturalLess("ab12", "abc"), Equals, true) 70 c.Assert(NaturalLess("ab2a", "ab10"), Equals, true) 71 c.Assert(NaturalLess("a0001", "a0000001"), Equals, true) 72 c.Assert(NaturalLess("a10", "abcdefgh2"), Equals, true) 73 c.Assert(NaturalLess("аб2аб", "аб10аб"), Equals, true) 74 c.Assert(NaturalLess("2аб", "3аб"), Equals, true) 75 c.Assert(NaturalLess("a1b", "a01b"), Equals, true) 76 c.Assert(NaturalLess("a01b", "a1b"), Equals, false) 77 c.Assert(NaturalLess("ab01b", "ab010b"), Equals, true) 78 c.Assert(NaturalLess("ab010b", "ab01b"), Equals, false) 79 c.Assert(NaturalLess("a001b01", "a01b001"), Equals, false) 80 c.Assert(NaturalLess("a1", "a1x"), Equals, true) 81 c.Assert(NaturalLess("1ax", "1b"), Equals, true) 82 c.Assert(NaturalLess("1b", "1ax"), Equals, false) 83 c.Assert(NaturalLess("082", "83"), Equals, true) 84 c.Assert(NaturalLess("083a", "9a"), Equals, false) 85 c.Assert(NaturalLess("9a", "083a"), Equals, true) 86 }