62 lines
1.3 KiB
Go
62 lines
1.3 KiB
Go
package main
|
|
|
|
import (
|
|
"bufio"
|
|
"bytes"
|
|
"context"
|
|
"encoding/json"
|
|
"fmt"
|
|
"os"
|
|
"strings"
|
|
"testing"
|
|
|
|
"git.defalsify.org/vise.git/engine"
|
|
|
|
"git.grassecon.net/urdt/ussd/enginetest"
|
|
)
|
|
|
|
type TestCase struct {
|
|
Input []string `json:"input"`
|
|
Expected string `json:"expected"`
|
|
}
|
|
|
|
type UserRegistration struct {
|
|
UserRegistration []TestCase `json:"user_registration"`
|
|
}
|
|
|
|
type TestData struct {
|
|
UserRegistration []TestCase `json:"user_registration"`
|
|
PinCheck []TestCase `json:"pincheck"`
|
|
}
|
|
|
|
func TestUserRegistration(t *testing.T) {
|
|
en, pe := enginetest.TestEngine("session1234112")
|
|
w := bytes.NewBuffer(nil)
|
|
file, err := os.Open("test_data.json")
|
|
if err != nil {
|
|
fmt.Println("Error opening file:", err)
|
|
return
|
|
}
|
|
defer file.Close()
|
|
|
|
var testData TestData
|
|
decoder := json.NewDecoder(file)
|
|
if err := decoder.Decode(&testData); err != nil {
|
|
fmt.Println("Error decoding JSON:", err)
|
|
return
|
|
}
|
|
|
|
var inputBuilder strings.Builder
|
|
for _, testCase := range testData.UserRegistration {
|
|
inputBuilder.WriteString(strings.Join(testCase.Input, "\n") + "\n")
|
|
}
|
|
readers := bufio.NewReader(strings.NewReader(inputBuilder.String()))
|
|
engine.Loop(context.Background(), en, readers, w, nil)
|
|
st := pe.GetState()
|
|
sym, _ := st.Where()
|
|
b := w.Bytes()
|
|
fmt.Println("Menu:",string(b))
|
|
fmt.Println("Rendering symbol:", sym)
|
|
|
|
}
|