diff --git a/device/alsa/alsa_test.go b/device/alsa/alsa_test.go index 44e54e38..5c8e9302 100644 --- a/device/alsa/alsa_test.go +++ b/device/alsa/alsa_test.go @@ -4,9 +4,10 @@ NAME AUTHOR Trek Hopton + Scott Barnard LICENSE - This file is Copyright (C) 2019 the Australian Ocean Lab (AusOcean) + This file is Copyright (C) 2019-2020 the Australian Ocean Lab (AusOcean) It is free software: you can redistribute it and/or modify them under the terms of the GNU General Public License as published by the @@ -25,6 +26,7 @@ LICENSE package alsa import ( + "bytes" "io/ioutil" "os" "strconv" @@ -106,3 +108,38 @@ func TestNearestPowerOfTwo(t *testing.T) { }) } } + +func TestIsRunning(t *testing.T) { + l := logger.New(logger.Debug, &bytes.Buffer{}, true) // Discard logs. + d := New(l) + + var err error + err = d.Set(config.Config{ + SampleRate: 1000, + Channels: 1, + BitDepth: 16, + RecPeriod: 1, + InputCodec: codecutil.ADPCM, + }) + if err != nil { + t.Skipf("could not set device: %w", err) + } + + err = d.Start() + if err != nil { + t.Skipf("could not start device %w", err) + } + time.Sleep(250 * time.Millisecond) + if !d.IsRunning() { + t.Error("device isn't running, when it should be") + } + + err = d.Stop() + if err != nil { + t.Error(err.Error()) + } + time.Sleep(250 * time.Millisecond) + if d.IsRunning() { + t.Error("device is running, when it should not be") + } +} diff --git a/device/file/file_test.go b/device/file/file_test.go new file mode 100644 index 00000000..f2a5d180 --- /dev/null +++ b/device/file/file_test.go @@ -0,0 +1,62 @@ +/* +DESCRIPTION + file_test.go tests the file AVDevice. + +AUTHORS + Scott Barnard + +LICENSE + Copyright (C) 2020 the Australian Ocean Lab (AusOcean) + + It is free software: you can redistribute it and/or modify them + under the terms of the GNU General Public License as published by the + Free Software Foundation, either version 3 of the License, or (at your + option) any later version. + + It is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + in gpl.txt. If not, see http://www.gnu.org/licenses. +*/ + +package file + +import ( + "testing" + "time" + + "bitbucket.org/ausocean/av/revid/config" +) + +func TestIsRunning(t *testing.T) { + d := New() + + var err error + d.Set(config.Config{ + InputPath: "../../../test/test-data/av/input/motion-detection/mjpeg/school.mjpeg", + }) + if err != nil { + t.Skipf("could not set device: %w", err) + } + + err = d.Start() + if err != nil { + t.Skipf("could not start device %w", err) + } + time.Sleep(250 * time.Millisecond) + if !d.IsRunning() { + t.Error("device isn't running, when it should be") + } + + err = d.Stop() + if err != nil { + t.Error(err.Error()) + } + time.Sleep(250 * time.Millisecond) + if d.IsRunning() { + t.Error("device is running, when it should not be") + } +} diff --git a/device/geovision/geovision_test.go b/device/geovision/geovision_test.go new file mode 100644 index 00000000..f57b957b --- /dev/null +++ b/device/geovision/geovision_test.go @@ -0,0 +1,68 @@ +/* +DESCRIPTION + geovision_test.go tests the geovision AVDevice. + +AUTHORS + Scott Barnard + +LICENSE + Copyright (C) 2020 the Australian Ocean Lab (AusOcean) + + It is free software: you can redistribute it and/or modify them + under the terms of the GNU General Public License as published by the + Free Software Foundation, either version 3 of the License, or (at your + option) any later version. + + It is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + in gpl.txt. If not, see http://www.gnu.org/licenses. +*/ + +package geovision + +import ( + "bytes" + "testing" + "time" + + "bitbucket.org/ausocean/av/codec/codecutil" + "bitbucket.org/ausocean/av/revid/config" + "bitbucket.org/ausocean/utils/logger" +) + +func TestIsRunning(t *testing.T) { + l := logger.New(logger.Debug, &bytes.Buffer{}, true) // Discard logs. + d := New(l) + + var err error + d.Set(config.Config{ + Logger: l, + InputCodec: codecutil.H264, + CameraIP: "192.168.4.20", + }) + if err != nil { + t.Skipf("could not set device: %w", err) + } + + err = d.Start() + if err != nil { + t.Skipf("could not start device %w", err) + } + time.Sleep(50 * time.Millisecond) + if !d.IsRunning() { + t.Error("device isn't running, when it should be") + } + + err = d.Stop() + if err != nil { + t.Error(err.Error()) + } + time.Sleep(50 * time.Millisecond) + if d.IsRunning() { + t.Error("device is running, when it should not be") + } +} diff --git a/device/raspivid/raspivid_test.go b/device/raspivid/raspivid_test.go new file mode 100644 index 00000000..22f5117a --- /dev/null +++ b/device/raspivid/raspivid_test.go @@ -0,0 +1,66 @@ +/* +DESCRIPTION + raspivid_test.go tests the raspivid AVDevice. + +AUTHORS + Scott Barnard + +LICENSE + Copyright (C) 2020 the Australian Ocean Lab (AusOcean) + + It is free software: you can redistribute it and/or modify them + under the terms of the GNU General Public License as published by the + Free Software Foundation, either version 3 of the License, or (at your + option) any later version. + + It is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + in gpl.txt. If not, see http://www.gnu.org/licenses. +*/ +package raspivid + +import ( + "bytes" + "testing" + "time" + + "bitbucket.org/ausocean/av/codec/codecutil" + "bitbucket.org/ausocean/av/revid/config" + "bitbucket.org/ausocean/utils/logger" +) + +func TestIsRunning(t *testing.T) { + l := logger.New(logger.Debug, &bytes.Buffer{}, true) // Discard logs. + d := New(l) + + var err error + d.Set(config.Config{ + Logger: l, + InputCodec: codecutil.H264, + }) + if err != nil { + t.Skipf("could not set device: %w", err) + } + + err = d.Start() + if err != nil { + t.Skipf("could not start device %w", err) + } + time.Sleep(250 * time.Millisecond) + if !d.IsRunning() { + t.Error("device isn't running, when it should be") + } + + err = d.Stop() + if err != nil { + t.Error(err.Error()) + } + time.Sleep(250 * time.Millisecond) + if d.IsRunning() { + t.Error("device is running, when it should not be") + } +} diff --git a/device/webcam/webcam_test.go b/device/webcam/webcam_test.go new file mode 100644 index 00000000..c0d15211 --- /dev/null +++ b/device/webcam/webcam_test.go @@ -0,0 +1,66 @@ +/* +DESCRIPTION + webcam_test.go tests the webcam AVDevice. + +AUTHORS + Scott Barnard + +LICENSE + Copyright (C) 2020 the Australian Ocean Lab (AusOcean) + + It is free software: you can redistribute it and/or modify them + under the terms of the GNU General Public License as published by the + Free Software Foundation, either version 3 of the License, or (at your + option) any later version. + + It is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + in gpl.txt. If not, see http://www.gnu.org/licenses. +*/ +package webcam + +import ( + "bytes" + "testing" + "time" + + "bitbucket.org/ausocean/av/codec/codecutil" + "bitbucket.org/ausocean/av/revid/config" + "bitbucket.org/ausocean/utils/logger" +) + +func TestIsRunning(t *testing.T) { + l := logger.New(logger.Debug, &bytes.Buffer{}, true) // Discard logs. + d := New(l) + + var err error + d.Set(config.Config{ + Logger: l, + InputCodec: codecutil.H264, + }) + if err != nil { + t.Skipf("could not set device: %w", err) + } + + err = d.Start() + if err != nil { + t.Skipf("could not start device %w", err) + } + time.Sleep(250 * time.Millisecond) + if !d.IsRunning() { + t.Error("device isn't running, when it should be") + } + + err = d.Stop() + if err != nil { + t.Error(err.Error()) + } + time.Sleep(250 * time.Millisecond) + if d.IsRunning() { + t.Error("device is running, when it should not be") + } +}