z_mirror/fmm
git clone https://git.raiguard.me/z_mirror/fmm
8f22b8d
predep-parsing
1package main 2 3import "testing" 4 5func TestVersion (t * testing.T ) { 6tests := []struct { 7input string 8output string 9outputWithBuild string 10p0 ,p1 ,p2 ,p3 uint16 11 }{ 12 {"1.0" ,"1.0.0" ,"1.0.0.0" ,1 ,0 ,0 ,0 }, 13 {"1.1.15" ,"1.1.15" ,"1.1.15.0" ,1 ,1 ,15 ,0 }, 14 {"2.3.4.5" ,"2.3.4" ,"2.3.4.5" ,2 ,3 ,4 ,5 }, 15 {"010.001.0100.0000001" ,"10.1.100" ,"10.1.100.1" ,10 ,1 ,100 ,1 }, 16 } 17for _ ,test := range tests { 18ver ,err := newVersion (test .input ) 19if err != nil { 20t .Error (err ) 21 } 22if ver [0 ]!= test .p0 || ver [1 ]!= test .p1 || ver [2 ]!= test .p2 || ver [3 ]!= test .p3 { 23t .Error ("Version parse mismatch:" ,test .input ,ver ) 24 } 25verStr := ver .toString (false ) 26if verStr != test .output { 27t .Error ("Version string mismatch:" ,test .input ,verStr ) 28 } 29verStrWithBuild := ver .toString (true ) 30if verStrWithBuild != test .outputWithBuild { 31t .Error ("Version string mismatch:" ,test .input ,verStr ) 32 } 33 } 34} 35 36func TestVersionCmp (t * testing.T ) { 37tests := []struct { 38v1 Version 39v2 Version 40res VersionCmpRes 41 }{ 42 {Version {1 ,3 ,1 },Version {2 ,0 },VersionLt }, 43 {Version {1 ,5 ,3 },Version {1 ,5 ,2 },VersionGt }, 44 {Version {1 ,5 },Version {1 ,5 ,0 ,0 },VersionEq }, 45 } 46for _ ,test := range tests { 47res := test .v1 .cmp (& test .v2 ) 48if res != test .res { 49t .Error ("Version comparison failure:" ,test .v1 ,test .v2 ,test .res ,res ) 50 } 51 } 52}