package main
import (
+ "bufio"
+ "io/ioutil"
"os"
"testing"
func TestGetInputFiles(t *testing.T) {
RegisterTestingT(t)
- result, err := getInputFiles("testdata")
+ result, err := getInputFiles("testdata", 1)
Expect(err).ShouldNot(HaveOccurred())
- Expect(result).To(HaveLen(5))
+ Expect(result).To(HaveLen(3))
for _, file := range result {
Expect(file).To(BeAnExistingFile())
}
func TestGetInputFilesError(t *testing.T) {
RegisterTestingT(t)
- result, err := getInputFiles("nonexisting_directory")
+ result, err := getInputFiles("nonexisting_directory", 1)
Expect(err).Should(HaveOccurred())
Expect(result).To(BeNil())
}
outDir := "test_output_directory"
// remove directory created during test
defer os.RemoveAll(outDir)
- err := generateFromFile("testdata/acl.api.json", outDir)
+ err := generateFromFile("testdata/acl.api.json", outDir, nil)
Expect(err).ShouldNot(HaveOccurred())
- fileInfo, err := os.Stat(outDir + "/acl/acl.go")
+ fileInfo, err := os.Stat(outDir + "/acl/acl.ba.go")
Expect(err).ShouldNot(HaveOccurred())
Expect(fileInfo.IsDir()).To(BeFalse())
- Expect(fileInfo.Name()).To(BeEquivalentTo("acl.go"))
+ Expect(fileInfo.Name()).To(BeEquivalentTo("acl.ba.go"))
}
func TestGenerateFromFileInputError(t *testing.T) {
RegisterTestingT(t)
outDir := "test_output_directory"
- err := generateFromFile("testdata/nonexisting.json", outDir)
+ err := generateFromFile("testdata/nonexisting.json", outDir, nil)
Expect(err).Should(HaveOccurred())
- Expect(err.Error()).To(ContainSubstring("reading data from file failed"))
+ Expect(err.Error()).To(ContainSubstring("invalid input file name"))
}
func TestGenerateFromFileReadJsonError(t *testing.T) {
RegisterTestingT(t)
outDir := "test_output_directory"
- err := generateFromFile("testdata/input-read-json-error.json", outDir)
+ err := generateFromFile("testdata/input-read-json-error.json", outDir, nil)
Expect(err).Should(HaveOccurred())
- Expect(err.Error()).To(ContainSubstring("JSON unmarshall failed"))
+ Expect(err.Error()).To(ContainSubstring("invalid input file name"))
}
func TestGenerateFromFileGeneratePackageError(t *testing.T) {
}
os.RemoveAll(outDir)
}()
- err := generateFromFile("testdata/input-generate-error.json", outDir)
+ err := generateFromFile("testdata/input-generate-error.json", outDir, nil)
Expect(err).Should(HaveOccurred())
}
func TestGetContext(t *testing.T) {
RegisterTestingT(t)
outDir := "test_output_directory"
- result, err := getContext("testdata/af_packet.api.json", outDir)
+ result, err := newContext("testdata/af_packet.api.json", outDir)
Expect(err).ShouldNot(HaveOccurred())
Expect(result).ToNot(BeNil())
- Expect(result.outputFile).To(BeEquivalentTo(outDir + "/af_packet/af_packet.go"))
+ Expect(result.outputFile).To(BeEquivalentTo(outDir + "/af_packet/af_packet.ba.go"))
}
func TestGetContextNoJsonFile(t *testing.T) {
RegisterTestingT(t)
outDir := "test_output_directory"
- result, err := getContext("testdata/input.txt", outDir)
+ result, err := newContext("testdata/input.txt", outDir)
Expect(err).Should(HaveOccurred())
Expect(err.Error()).To(ContainSubstring("invalid input file name"))
Expect(result).To(BeNil())
func TestGetContextInterfaceJson(t *testing.T) {
RegisterTestingT(t)
outDir := "test_output_directory"
- result, err := getContext("testdata/interface.json", outDir)
+ result, err := newContext("testdata/ip.api.json", outDir)
Expect(err).ShouldNot(HaveOccurred())
Expect(result).ToNot(BeNil())
Expect(result.outputFile)
- Expect(result.outputFile).To(BeEquivalentTo(outDir + "/interfaces/interfaces.go"))
-
+ Expect(result.outputFile).To(BeEquivalentTo(outDir + "/ip/ip.ba.go"))
}
func TestReadJson(t *testing.T) {
RegisterTestingT(t)
- inputData, err := readFile("testdata/af_packet.api.json")
+ inputData, err := ioutil.ReadFile("testdata/af_packet.api.json")
Expect(err).ShouldNot(HaveOccurred())
- result, err := parseJSON(inputData)
+ result, err := parseInputJSON(inputData)
Expect(err).ShouldNot(HaveOccurred())
Expect(result).ToNot(BeNil())
Expect(result.Len()).To(BeEquivalentTo(5))
func TestReadJsonError(t *testing.T) {
RegisterTestingT(t)
- inputData, err := readFile("testdata/input-read-json-error.json")
+ inputData, err := ioutil.ReadFile("testdata/input-read-json-error.json")
Expect(err).ShouldNot(HaveOccurred())
- result, err := parseJSON(inputData)
+ result, err := parseInputJSON(inputData)
Expect(err).Should(HaveOccurred())
Expect(result).To(BeNil())
}
-/*
func TestGeneratePackage(t *testing.T) {
RegisterTestingT(t)
// prepare context
testCtx.packageName = "test-package-name"
// prepare input/output output files
- inputData, err := readFile("testdata/ip.api.json")
+ inputData, err := ioutil.ReadFile("testdata/ip.api.json")
+ Expect(err).ShouldNot(HaveOccurred())
+ jsonRoot, err := parseInputJSON(inputData)
+ Expect(err).ShouldNot(HaveOccurred())
+ testCtx.packageData, err = parsePackage(testCtx, jsonRoot)
Expect(err).ShouldNot(HaveOccurred())
- testCtx.inputBuff = bytes.NewBuffer(inputData)
- inFile, _ := parseJSON(inputData)
outDir := "test_output_directory"
- outFile, _ := os.Create(outDir)
+ outFile, err := os.Create(outDir)
+ Expect(err).ShouldNot(HaveOccurred())
defer os.RemoveAll(outDir)
// prepare writer
Expect(err).ShouldNot(HaveOccurred())
}
-
func TestGenerateMessageType(t *testing.T) {
RegisterTestingT(t)
// prepare context
testCtx.packageName = "test-package-name"
// prepare input/output output files
- inputData, err := readFile("testdata/ip.api.json")
+ inputData, err := ioutil.ReadFile("testdata/ip.api.json")
+ Expect(err).ShouldNot(HaveOccurred())
+ jsonRoot, err := parseInputJSON(inputData)
Expect(err).ShouldNot(HaveOccurred())
- testCtx.inputBuff = bytes.NewBuffer(inputData)
- inFile, _ := parseJSON(inputData)
outDir := "test_output_directory"
- outFile, _ := os.Create(outDir)
+ outFile, err := os.Create(outDir)
+ Expect(err).ShouldNot(HaveOccurred())
+ testCtx.packageData, err = parsePackage(testCtx, jsonRoot)
+ Expect(err).ShouldNot(HaveOccurred())
defer os.RemoveAll(outDir)
// prepare writer
writer := bufio.NewWriter(outFile)
- types := inFile.Map("types")
- testCtx.types = map[string]string{
- "u32": "sw_if_index",
- "u8": "weight",
- }
- Expect(types.Len()).To(BeEquivalentTo(1))
- for i := 0; i < types.Len(); i++ {
- typ := types.At(i)
- Expect(writer.Buffered()).To(BeZero())
- err := generateMessage(testCtx, writer, typ, true)
- Expect(err).ShouldNot(HaveOccurred())
+ for _, msg := range testCtx.packageData.Messages {
+ generateMessage(testCtx, writer, &msg)
Expect(writer.Buffered()).ToNot(BeZero())
-
}
}
-func TestGenerateMessageName(t *testing.T) {
+/*func TestGenerateMessageName(t *testing.T) {
RegisterTestingT(t)
// prepare context
testCtx := new(context)