Skip to content

Commit

Permalink
tests: cleanup
Browse files Browse the repository at this point in the history
- move remaining integration test helper into integration_test.go
- where appropriate, use require.NoError(*testing.T, error)
  instead of assert.NoError(*testing.T, error), to fail a
  test immediately
  • Loading branch information
dmke authored and xlab committed Feb 17, 2022
1 parent bbd5673 commit 290c847
Show file tree
Hide file tree
Showing 5 changed files with 112 additions and 129 deletions.
87 changes: 0 additions & 87 deletions at_test.go

This file was deleted.

98 changes: 82 additions & 16 deletions integration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,39 +10,105 @@ import (
"github.com/xlab/at/pdu"
)

// Needs to be changed for each particular configuration.
const (
CommandPortPath = "/dev/tty.HUAWEIMobile-Modem"
NotifyPortPath = "/dev/tty.HUAWEIMobile-Pcui"
TestPhoneAddress = "+79269965690"
BalanceUSSD = "*100#"
)

var dev *Device

// openDevice opens the hardcoded device paths for reading and writing,
// also inits this device with the default device profile.
func openDevice() (err error) {
dev = &Device{
CommandPort: CommandPortPath,
NotifyPort: NotifyPortPath,
}
if err = dev.Open(); err != nil {
return
}
if err = dev.Init(DeviceE173()); err != nil {
return
}
return
}

// waitDevice monitors available channels for the given period of time, or
// until the fetch process exits.
func waitDevice(n int) {
t := time.NewTimer(time.Second * time.Duration(n))
defer t.Stop()
go dev.Watch()
for {
select {
case <-t.C:
return
case <-dev.Closed():
return
case msg, ok := <-dev.IncomingSms():
if ok {
log.Printf("Incoming sms from %s: %s", msg.Address, msg.Text)
}
case ussd, ok := <-dev.UssdReply():
if ok {
log.Printf("USSD result: %s", ussd)
}
case <-dev.StateUpdate():
log.Printf("Signal strength: %d (%s/%s)", dev.State.SignalStrength, dev.State.OperatorName,
dev.State.SystemSubmode.Description)
}
}
}

// This costs money (but works)

// func TestSmsSend(t *testing.T) {
// err := openDevice()
// require.NoError(t, err)
// defer dev.Close()
//
// msg := sms.Message{
// Text: "Lazy fox jumps over ленивая собака",
// Type: sms.MessageTypes.Submit,
// Encoding: sms.Encodings.UCS2,
// Address: sms.PhoneNumber(TestPhoneAddress),
// VPFormat: sms.ValidityPeriodFormats.Relative,
// VP: sms.ValidityPeriod(24 * time.Hour * 4),
// }
// n, octets, err := msg.PDU()
// require.NoError(t, err)
//
// err = dev.Commands.CMGS(n, octets)
// require.NoError(t, err)
// waitDevice(10)
// }

// Test the device lifecycle.
func TestOpenInitWaitClose(t *testing.T) {
err := openDevice()
if !assert.NoError(t, err) {
return
}
require.NoError(t, err)
defer dev.Close()
waitDevice(1)
}

// Test the "AT" command.
func TestNoop(t *testing.T) {
err := openDevice()
if !assert.NoError(t, err) {
return
}
require.NoError(t, err)
defer dev.Close()
_, err = dev.Send(NoopCmd)
assert.NoError(t, err)
require.NoError(t, err)
}

// Test USSD queries, the result will be reported asynchroniously.
func TestUssd(t *testing.T) {
err := openDevice()
if !assert.NoError(t, err) {
return
}
defer func() {
dev.Close()
}()
require.NoError(t, err)
defer dev.Close()
err = dev.Commands.CUSD(UssdResultReporting.Enable, pdu.Encode7Bit(BalanceUSSD), Encodings.Gsm7Bit)
if !assert.NoError(t, err) {
return
}
require.NoError(t, err)
waitDevice(10)
}
3 changes: 2 additions & 1 deletion pdu/usc2_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"testing"

"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)

var testStringUcs2 = "Этот абонент звонил вам 2 раза"
Expand Down Expand Up @@ -33,6 +34,6 @@ func TestDecodeUcs2(t *testing.T) {
oct := testOctetsUcs2
out, err := DecodeUcs2(oct, false)
exp := testStringUcs2
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, exp, out)
}
43 changes: 22 additions & 21 deletions sms/sms_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"time"

"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/xlab/at/util"
)

Expand Down Expand Up @@ -94,9 +95,9 @@ func TestSmsDeliverReadFromUCS2(t *testing.T) {

var msg Message
data, err := util.Bytes(pduDeliverUCS2)
assert.NoError(t, err)
require.NoError(t, err)
n, err := msg.ReadFrom(data)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, n, len(data))
assert.Equal(t, smsDeliverUCS2, msg)
}
Expand All @@ -106,9 +107,9 @@ func TestSmsDeliverReadFromGsm7(t *testing.T) {

var msg Message
data, err := util.Bytes(pduDeliverGsm7)
assert.NoError(t, err)
require.NoError(t, err)
n, err := msg.ReadFrom(data)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, n, len(data))
assert.Equal(t, smsDeliverGsm7, msg)
}
Expand All @@ -118,9 +119,9 @@ func TestSmsDeliverReadFromGsm7_2(t *testing.T) {

var msg Message
data, err := util.Bytes(pduDeliverGsm7_2)
assert.NoError(t, err)
require.NoError(t, err)
n, err := msg.ReadFrom(data)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, n, len(data))
assert.Equal(t, smsDeliverGsm7_2, msg)
}
Expand All @@ -129,23 +130,23 @@ func TestSmsDeliverPduUCS2(t *testing.T) {
t.Parallel()

n, octets, err := smsDeliverUCS2.PDU()
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, len(pduDeliverUCS2)/2-8, n)
data, err := util.Bytes(pduDeliverUCS2)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, data, octets)
}

func TestSmsDeliverPduGsm7(t *testing.T) {
t.Parallel()

n, octets, err := smsDeliverGsm7.PDU()
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, len(pduDeliverGsm7)/2-8, n)
data, err := util.Bytes(pduDeliverGsm7)
t.Logf("%02x\n", string(data))
t.Logf("%02x\n", string(octets))
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, data, octets)
}

Expand All @@ -154,9 +155,9 @@ func TestSmsSubmitReadFromUCS2(t *testing.T) {

var msg Message
data, err := util.Bytes(pduSubmitUCS2)
assert.NoError(t, err)
require.NoError(t, err)
n, err := msg.ReadFrom(data)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, n, len(data))
assert.Equal(t, smsSubmitUCS2, msg)
}
Expand All @@ -166,9 +167,9 @@ func TestSmsSubmitReadFromGsm7(t *testing.T) {

var msg Message
data, err := util.Bytes(pduSubmitGsm7)
assert.NoError(t, err)
require.NoError(t, err)
n, err := msg.ReadFrom(data)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, n, len(data))
assert.Equal(t, smsSubmitGsm7, msg)
}
Expand All @@ -177,21 +178,21 @@ func TestSmsSubmitPduUCS2(t *testing.T) {
t.Parallel()

n, octets, err := smsSubmitUCS2.PDU()
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, len(pduSubmitUCS2)/2-8, n)
data, err := util.Bytes(pduSubmitUCS2)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, data, octets)
}

func TestSmsSubmitPduGsm7(t *testing.T) {
t.Parallel()

n, octets, err := smsSubmitGsm7.PDU()
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, len(pduSubmitGsm7)/2-8, n)
data, err := util.Bytes(pduSubmitGsm7)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, data, octets)
}

Expand All @@ -200,12 +201,12 @@ func TestSmsStatusReport(t *testing.T) {

m := Message{}
_, err := m.ReadFrom(util.MustBytes(pduStatusReport))
assert.NoError(t, err)
require.NoError(t, err)

n, octets, err := smsReport.PDU()
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, len(pduStatusReport)/2-8, n)
data, err := util.Bytes(pduStatusReport)
assert.NoError(t, err)
require.NoError(t, err)
assert.Equal(t, data, octets)
}
10 changes: 6 additions & 4 deletions util/util_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,15 @@ func TestBytes(t *testing.T) {
t.Parallel()

out, err := Bytes("4160629140050E")
_, err2 := Bytes("4160629140050E0")
_, err3 := Bytes("4160629140050K")
exp := []byte{0x41, 0x60, 0x62, 0x91, 0x40, 0x5, 0x0e}
assert.NoError(t, err)
assert.Error(t, err2)
assert.Error(t, err3)
assert.Equal(t, exp, out)

_, err = Bytes("4160629140050E0")
assert.EqualError(t, err, "parse octets: uneven length of string")

_, err = Bytes("4160629140050K")
assert.EqualError(t, err, "parse octets: met a non-HEX rune in string")
}

func TestHexString(t *testing.T) {
Expand Down

0 comments on commit 290c847

Please sign in to comment.