github.com/anthonyme00/gomarkdoc@v1.0.0/lang/value_test.go (about) 1 package lang_test 2 3 import ( 4 "errors" 5 "strings" 6 "testing" 7 8 "github.com/anthonyme00/gomarkdoc/lang" 9 "github.com/anthonyme00/gomarkdoc/logger" 10 "github.com/matryer/is" 11 ) 12 13 func TestValue_Level(t *testing.T) { 14 is := is.New(t) 15 16 val, err := loadValue("../testData/lang/function", "Variable") 17 is.NoErr(err) 18 19 is.Equal(val.Level(), 2) 20 } 21 22 func TestValue_Summary(t *testing.T) { 23 is := is.New(t) 24 25 val, err := loadValue("../testData/lang/function", "Variable") 26 is.NoErr(err) 27 28 is.Equal(val.Summary(), "Variable is a package-level variable.") 29 } 30 31 func TestValue_Decl(t *testing.T) { 32 is := is.New(t) 33 34 val, err := loadValue("../testData/lang/function", "Variable") 35 is.NoErr(err) 36 37 decl, err := val.Decl() 38 is.NoErr(err) 39 40 is.Equal(decl, "var Variable = 5") 41 } 42 43 func TestValue_Location(t *testing.T) { 44 is := is.New(t) 45 46 val, err := loadValue("../testData/lang/function", "Variable") 47 is.NoErr(err) 48 49 loc := val.Location() 50 is.Equal(loc.Start.Line, 4) 51 is.Equal(loc.Start.Col, 1) 52 is.Equal(loc.End.Line, 4) 53 is.Equal(loc.End.Col, 17) 54 is.True(strings.HasSuffix(loc.Filepath, "value.go")) 55 } 56 57 func loadValue(dir, name string) (*lang.Value, error) { 58 buildPkg, err := getBuildPackage(dir) 59 if err != nil { 60 return nil, err 61 } 62 63 log := logger.New(logger.ErrorLevel) 64 pkg, err := lang.NewPackageFromBuild(log, buildPkg) 65 if err != nil { 66 return nil, err 67 } 68 69 for _, v := range pkg.Vars() { 70 d, err := v.Decl() 71 if err == nil && strings.Contains(d, name) { 72 return v, nil 73 } 74 } 75 76 for _, v := range pkg.Consts() { 77 d, err := v.Decl() 78 if err == nil && strings.Contains(d, name) { 79 return v, nil 80 } 81 } 82 83 return nil, errors.New("value not found") 84 }