package db import ( "reflect" "testing" "time" "github.com/jmoiron/sqlx" "github.com/kschamplin/gotelem/skylab" ) // helper func to get a random bus event with random data. func GetRandomBusEvent() skylab.BusEvent { data := skylab.WsrVelocity{ MotorVelocity: 1.0, VehicleVelocity: 4.0, } ev := skylab.BusEvent{ Timestamp: time.Now(), Data: &data, } ev.Id, _ = data.CANId() return ev } func TestTelemDb(t *testing.T) { var tdb *TelemDb t.Run("test opening database", func(t *testing.T) { var err error tdb, err = OpenTelemDb("file::memory:?cache=shared") if err != nil { t.Errorf("could not open db: %v", err) } tdb.db.Ping() }) t.Run("test inserting bus event", func(t *testing.T) { type args struct { events []skylab.BusEvent } tests := []struct { name string args args wantErr bool }{ { name: "add no packet", args: args{ events: []skylab.BusEvent{}, }, wantErr: false, }, { name: "add single packet", args: args{ events: []skylab.BusEvent{}, }, wantErr: false, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { if err := tdb.AddEvents(tt.args.events...); (err != nil) != tt.wantErr { t.Errorf("TelemDb.AddEvents() error = %v, wantErr %v", err, tt.wantErr) } }) } }) type fields struct { db *sqlx.DB } type args struct { limit int where []QueryFrag } tests := []struct { name string fields fields args args wantEvents []skylab.BusEvent wantErr bool }{ // TODO: Add test cases. } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { tdb := &TelemDb{ db: tt.fields.db, } gotEvents, err := tdb.GetEvents(tt.args.limit, tt.args.where...) if (err != nil) != tt.wantErr { t.Errorf("TelemDb.GetEvents() error = %v, wantErr %v", err, tt.wantErr) return } if !reflect.DeepEqual(gotEvents, tt.wantEvents) { t.Errorf("TelemDb.GetEvents() = %v, want %v", gotEvents, tt.wantEvents) } }) } }