MCPcopy Create free account
hub / github.com/dolthub/doltgresql / GenerateTests

Function GenerateTests

testing/generation/function_coverage/create_tests.go:60–141  ·  view source on GitHub ↗

GenerateTests generates and writes a test file for the given function.

(parentFolder utils.RootFolderLocation, functionName string, assertions []Assertion)

Source from the content-addressed store, hash-verified

58
59// GenerateTests generates and writes a test file for the given function.
60func GenerateTests(parentFolder utils.RootFolderLocation, functionName string, assertions []Assertion) error {
61 // We want to skip some functions since we know they'll always return a different result
62 switch functionName {
63 case "random":
64 return nil
65 }
66 // For now we'll skip some functions that will take a long time to calculate
67 switch functionName {
68 case "exp", "factorial", "lpad", "power", "rpad", "repeat", "round":
69 return nil
70 }
71
72 sb := strings.Builder{}
73 sb.WriteString(fmt.Sprintf(TestHeader, time.Now().Year(),
74 strings.ReplaceAll(cases.Title(language.English).String(strings.ReplaceAll(functionName, "_", " ")), " ", "")))
75 sb.WriteString("\t\t{\n")
76 sb.WriteString(fmt.Sprintf("\t\t\tName: \"%s\",\n", functionName))
77 sb.WriteString("\t\t\tAssertions: []ScriptTestAssertion{\n")
78 for _, assertion := range assertions {
79 sb.WriteString("\t\t\t\t{\n")
80 if !assertion.Error {
81 sb.WriteString(fmt.Sprintf("\t\t\t\t\tQuery: \"%s\",\n", assertion.Stmt))
82 sb.WriteString("\t\t\t\t\tExpected: []sql.Row{")
83 for i, results := range assertion.Rows {
84 if i > 0 {
85 sb.WriteRune(',')
86 }
87 sb.WriteRune('{')
88 for j, result := range results {
89 if j > 0 {
90 sb.WriteRune(',')
91 }
92 switch result := result.(type) {
93 case int:
94 sb.WriteString(fmt.Sprintf("int64(%d)", result))
95 case int8:
96 sb.WriteString(fmt.Sprintf("int8(%d)", result))
97 case int16:
98 sb.WriteString(fmt.Sprintf("int16(%d)", result))
99 case int32:
100 sb.WriteString(fmt.Sprintf("int32(%d)", result))
101 case int64:
102 sb.WriteString(fmt.Sprintf("int64(%d)", result))
103 case uint:
104 sb.WriteString(fmt.Sprintf("uint64(%d)", result))
105 case uint8:
106 sb.WriteString(fmt.Sprintf("uint8(%d)", result))
107 case uint16:
108 sb.WriteString(fmt.Sprintf("uint16(%d)", result))
109 case uint32:
110 sb.WriteString(fmt.Sprintf("uint32(%d)", result))
111 case uint64:
112 sb.WriteString(fmt.Sprintf("uint64(%d)", result))
113 case float32:
114 sb.WriteString(fmt.Sprintf("float32(%f)", result))
115 case float64:
116 sb.WriteString(fmt.Sprintf("float64(%f)", result))
117 case string:

Callers 1

mainFunction · 0.85

Calls 5

NumericToStringFunction · 0.85
WriteStringMethod · 0.80
WriteFileToDirectoryMethod · 0.80
StringMethod · 0.65
ErrorfMethod · 0.65

Tested by

no test coverage detected