v4l2-ruby 0.9.2 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,10 @@
1
+ require 'test/unit'
2
+ require 'v4l2'
3
+
4
+ module TestUtil
5
+ refine Test::Unit::TestCase do
6
+ def klass
7
+ return Video4Linux2::Camera
8
+ end
9
+ end
10
+ end
data/tests/run_unit.rb ADDED
@@ -0,0 +1,24 @@
1
+ #! /usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ require 'pathname'
5
+ require 'test/unit'
6
+
7
+ require_relative "lib/test_util"
8
+ require_relative "lib/config"
9
+
10
+ raise("target unit is not specified") if ARGV.empty?
11
+
12
+ ARGV.each { |arg|
13
+ target = Pathname(arg)
14
+
15
+ case
16
+ when target.file?
17
+ require_relative target
18
+
19
+ when target.directory?
20
+ target.find { |file|
21
+ require_relative file if /^test_.*\.rb$/ =~ file.basename.to_s
22
+ }
23
+ end
24
+ }
data/tests/template.rb ADDED
@@ -0,0 +1,30 @@
1
+ #! /usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ require 'test/unit'
5
+ require 'v4l2'
6
+
7
+ using TestUtil
8
+
9
+ class TestXX < Test::Unit::TestCase
10
+ class << self
11
+ def startup
12
+ end
13
+
14
+ def shutdown
15
+ end
16
+ end
17
+
18
+ def setup
19
+ end
20
+
21
+ def teardown
22
+ end
23
+
24
+ test "smaple" do
25
+ cam = assert_nothing_raised {klass.open(Config.device)}
26
+
27
+ ensure
28
+ cam&.close if defined? cam
29
+ end
30
+ end
@@ -0,0 +1,49 @@
1
+ #! /usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ require 'test/unit'
5
+ require 'v4l2'
6
+
7
+ using TestUtil
8
+
9
+ class TestStart < Test::Unit::TestCase
10
+ class << self
11
+ def startup
12
+ end
13
+
14
+ def shutdown
15
+ end
16
+ end
17
+
18
+ def setup
19
+ end
20
+
21
+ def teardown
22
+ end
23
+
24
+ test "simple start" do
25
+ cam = assert_nothing_raised {klass.open(Config.device)}
26
+
27
+ assert_nothing_raised {
28
+ cam.start
29
+ }
30
+
31
+ assert_true(cam.ready?)
32
+
33
+ ensure
34
+ cam&.close if defined? cam
35
+ end
36
+
37
+ test "with block" do
38
+ cam = assert_nothing_raised {klass.open(Config.device)}
39
+
40
+ assert_nothing_raised {
41
+ cam.start {assert_true(cam.ready?)}
42
+ }
43
+
44
+ assert_false(cam.ready?)
45
+
46
+ ensure
47
+ cam&.close if defined? cam
48
+ end
49
+ end
@@ -0,0 +1,48 @@
1
+ #! /usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ require 'test/unit'
5
+ require 'v4l2'
6
+
7
+ using TestUtil
8
+
9
+ class TestFramerate < Test::Unit::TestCase
10
+ class << self
11
+ def startup
12
+ end
13
+
14
+ def shutdown
15
+ end
16
+ end
17
+
18
+ def setup
19
+ end
20
+
21
+ def teardown
22
+ end
23
+
24
+ test "set format from capability" do
25
+ cam = assert_nothing_raised {klass.open(Config.device)}
26
+
27
+ assert_nothing_raised {
28
+ cam.support_formats.each {|fmt| cam.format = fmt.fcc}
29
+ }
30
+
31
+ ensure
32
+ cam&.close if defined? cam
33
+ end
34
+
35
+ test "set format" do
36
+ cam = assert_nothing_raised {klass.open(Config.device)}
37
+
38
+ assert_nothing_raised {cam.format = "YUYV"}
39
+ assert_nothing_raised {cam.format = :MJPG}
40
+
41
+ assert_raise_kind_of(TypeError) {cam.format = 10}
42
+ assert_raise_kind_of(TypeError) {cam.format = []}
43
+ assert_raise_kind_of(TypeError) {cam.format = {}}
44
+
45
+ ensure
46
+ cam&.close if defined? cam
47
+ end
48
+ end
@@ -0,0 +1,57 @@
1
+ #! /usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ require 'test/unit'
5
+ require 'v4l2'
6
+
7
+ using TestUtil
8
+
9
+ class TestFramerate < Test::Unit::TestCase
10
+ class << self
11
+ def startup
12
+ end
13
+
14
+ def shutdown
15
+ end
16
+ end
17
+
18
+ def setup
19
+ end
20
+
21
+ def teardown
22
+ end
23
+
24
+ test "set framerate from capability" do
25
+ cam = assert_nothing_raised {klass.open(Config.device)}
26
+
27
+ assert_nothing_raised {
28
+ cam.support_formats.each { |fmt|
29
+ cam.frame_capabilities(fmt.fcc).each { |cap|
30
+ cap.rate.each { |rate| cam.framerate = rate}
31
+ }
32
+ }
33
+ }
34
+
35
+ ensure
36
+ cam&.close if defined? cam
37
+ end
38
+
39
+ test "set frame rate" do
40
+ cam = assert_nothing_raised {klass.open(Config.device)}
41
+
42
+ assert_nothing_raised {cam.framerate = 10}
43
+ assert_equal(1/10r, cam.framerate)
44
+
45
+ assert_nothing_raised {cam.framerate = 5.0}
46
+ assert_equal(1/5r, cam.framerate)
47
+
48
+ assert_nothing_raised {cam.framerate = 10/1r}
49
+ assert_equal(1/10r, cam.framerate)
50
+
51
+ assert_raise_kind_of(TypeError) {cam.image_width = "10"}
52
+ assert_raise_kind_of(TypeError) {cam.image_width = :"10"}
53
+
54
+ ensure
55
+ cam&.close if defined? cam
56
+ end
57
+ end
@@ -0,0 +1,85 @@
1
+ #! /usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ require 'test/unit'
5
+ require 'v4l2'
6
+
7
+ using TestUtil
8
+
9
+ class TestImageSize < Test::Unit::TestCase
10
+ class << self
11
+ def startup
12
+ end
13
+
14
+ def shutdown
15
+ end
16
+ end
17
+
18
+ def setup
19
+ end
20
+
21
+ def teardown
22
+ end
23
+
24
+ test "set image size from capability list" do
25
+ cam = assert_nothing_raised {klass.open(Config.device)}
26
+
27
+ assert_nothing_raised {
28
+ cam.support_formats.each { |fmt|
29
+ cam.frame_capabilities(:MJPEG).each { |cap|
30
+ cam.image_width = cap.width
31
+ cam.image_height = cap.height
32
+ }
33
+ }
34
+ }
35
+
36
+ ensure
37
+ cam&.close if defined? cam
38
+ end
39
+
40
+ test "set width" do
41
+ cam = assert_nothing_raised {klass.open(Config.device)}
42
+
43
+ assert_nothing_raised {cam.image_width = 640}
44
+ assert_equal(640, cam.image_width);
45
+
46
+ assert_nothing_raised {cam.image_width = 320.0}
47
+ assert_equal(320, cam.image_width);
48
+
49
+ assert_nothing_raised {cam.image_width = 1280/2r}
50
+ assert_equal(640, cam.image_width);
51
+
52
+ assert_nothing_raised {cam.image_width = 320 + 0i}
53
+ assert_equal(320, cam.image_width);
54
+
55
+ assert_raise_kind_of(TypeError) {cam.image_width = "123"}
56
+ assert_raise_kind_of(TypeError) {cam.image_width = :A123}
57
+ assert_raise_kind_of(RangeError) {cam.image_width = 640i}
58
+
59
+ ensure
60
+ cam&.close if defined? cam
61
+ end
62
+
63
+ test "set height" do
64
+ cam = assert_nothing_raised {klass.open(Config.device)}
65
+
66
+ assert_nothing_raised {cam.image_height = 480}
67
+ assert_equal(480, cam.image_height);
68
+
69
+ assert_nothing_raised {cam.image_height = 240.0}
70
+ assert_equal(240, cam.image_height);
71
+
72
+ assert_nothing_raised {cam.image_height = 960/2r}
73
+ assert_equal(480, cam.image_height);
74
+
75
+ assert_nothing_raised {cam.image_height = 240 + 0i}
76
+ assert_equal(240, cam.image_height);
77
+
78
+ assert_raise_kind_of(TypeError) {cam.image_width = "123"}
79
+ assert_raise_kind_of(TypeError) {cam.image_width = :A123}
80
+ assert_raise_kind_of(RangeError) {cam.image_width = 480i}
81
+
82
+ ensure
83
+ cam&.close if defined? cam
84
+ end
85
+ end
@@ -0,0 +1,53 @@
1
+ #! /usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ require 'test/unit'
5
+ require 'v4l2'
6
+
7
+ using TestUtil
8
+
9
+ class TestSimpleCreate < Test::Unit::TestCase
10
+ class << self
11
+ def startup
12
+ end
13
+
14
+ def shutdown
15
+ end
16
+ end
17
+
18
+ def setup
19
+ end
20
+
21
+ def teardown
22
+ end
23
+
24
+ test "simple create" do
25
+ cam = assert_nothing_raised {klass.open(Config.device)}
26
+
27
+ assert_respond_to(cam, :close)
28
+ assert_respond_to(cam, :controls)
29
+ assert_respond_to(cam, :support_formats)
30
+ assert_respond_to(cam, :frame_capabilities)
31
+ assert_respond_to(cam, :set_control)
32
+ assert_respond_to(cam, :get_control)
33
+ assert_respond_to(cam, :format=)
34
+ assert_respond_to(cam, :image_width)
35
+ assert_respond_to(cam, :image_width=)
36
+ assert_respond_to(cam, :image_height)
37
+ assert_respond_to(cam, :image_height=)
38
+ assert_respond_to(cam, :framerate)
39
+ assert_respond_to(cam, :framerate=)
40
+ assert_respond_to(cam, :state)
41
+ assert_respond_to(cam, :start)
42
+ assert_respond_to(cam, :stop)
43
+ assert_respond_to(cam, :capture)
44
+ assert_respond_to(cam, :busy?)
45
+ assert_respond_to(cam, :error?)
46
+ assert_respond_to(cam, :name)
47
+ assert_respond_to(cam, :driver)
48
+ assert_respond_to(cam, :bus)
49
+
50
+ ensure
51
+ cam&.close
52
+ end
53
+ end
@@ -0,0 +1,34 @@
1
+ #! /usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ require 'test/unit'
5
+ require 'v4l2'
6
+
7
+ using TestUtil
8
+
9
+ class TestGetDriverName < Test::Unit::TestCase
10
+ class << self
11
+ def startup
12
+ end
13
+
14
+ def shutdown
15
+ end
16
+ end
17
+
18
+ def setup
19
+ end
20
+
21
+ def teardown
22
+ end
23
+
24
+ test "get driver name" do
25
+ cam = assert_nothing_raised {klass.open(Config.device)}
26
+
27
+ cam.bus if Config.show_data?
28
+
29
+ assert_kind_of(String, cam.bus)
30
+
31
+ ensure
32
+ cam&.close
33
+ end
34
+ end
@@ -0,0 +1,92 @@
1
+ #! /usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ require 'test/unit'
5
+ require 'v4l2'
6
+
7
+ using TestUtil
8
+
9
+ class TestGetControls < Test::Unit::TestCase
10
+ class << self
11
+ def startup
12
+ end
13
+
14
+ def shutdown
15
+ end
16
+ end
17
+
18
+ def setup
19
+ end
20
+
21
+ def teardown
22
+ end
23
+
24
+ test "get controls" do
25
+ cam = assert_nothing_raised {klass.open(Config.device)}
26
+
27
+ dat = cam.controls
28
+
29
+ pp dat if Config.show_data?
30
+
31
+ assert_kind_of(Array, dat)
32
+ assert_true(dat.all? {|item| item.kind_of?(klass::Control)})
33
+
34
+ ensure
35
+ cam&.close
36
+ end
37
+
38
+ test "atributes" do
39
+ cam = assert_nothing_raised {klass.open(Config.device)}
40
+
41
+ cam.controls.each { |item|
42
+ case item
43
+ when klass::IntegerControl
44
+ assert_respond_to(item, :name)
45
+ assert_respond_to(item, :id)
46
+ assert_respond_to(item, :min)
47
+ assert_respond_to(item, :max)
48
+ assert_respond_to(item, :step)
49
+ assert_respond_to(item, :default)
50
+
51
+ assert_kind_of(String, item.name)
52
+ assert_kind_of(Integer, item.id)
53
+ assert_kind_of(Integer, item.min)
54
+ assert_kind_of(Integer, item.max)
55
+ assert_kind_of(Integer, item.step)
56
+ assert_kind_of(Integer, item.default)
57
+
58
+ when klass::BooleanControl
59
+ assert_respond_to(item, :name)
60
+ assert_respond_to(item, :id)
61
+ assert_respond_to(item, :default)
62
+
63
+ assert_kind_of(String, item.name)
64
+ assert_kind_of(Integer, item.id)
65
+ assert_boolean(item.default)
66
+
67
+ when klass::MenuControl
68
+ assert_respond_to(item, :name)
69
+ assert_respond_to(item, :id)
70
+ assert_respond_to(item, :items)
71
+ assert_respond_to(item, :default)
72
+
73
+ assert_kind_of(String, item.name)
74
+ assert_kind_of(Integer, item.id)
75
+ assert_kind_of(Array, item.items)
76
+
77
+ item.items.each {|mi|
78
+ assert_respond_to(mi, :name)
79
+ assert_respond_to(mi, :index)
80
+ assert_kind_of(String, mi.name)
81
+ assert_kind_of(Integer, mi.index)
82
+ }
83
+
84
+ else
85
+ add_failure("found unknown controls item")
86
+ end
87
+ }
88
+
89
+ ensure
90
+ cam&.close
91
+ end
92
+ end
@@ -0,0 +1,34 @@
1
+ #! /usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ require 'test/unit'
5
+ require 'v4l2'
6
+
7
+ using TestUtil
8
+
9
+ class TestGetDeviceName < Test::Unit::TestCase
10
+ class << self
11
+ def startup
12
+ end
13
+
14
+ def shutdown
15
+ end
16
+ end
17
+
18
+ def setup
19
+ end
20
+
21
+ def teardown
22
+ end
23
+
24
+ test "get device name" do
25
+ cam = assert_nothing_raised {klass.open(Config.device)}
26
+
27
+ p cam.name if Config.show_data?
28
+
29
+ assert_kind_of(String, cam.name)
30
+
31
+ ensure
32
+ cam&.close
33
+ end
34
+ end
@@ -0,0 +1,34 @@
1
+ #! /usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ require 'test/unit'
5
+ require 'v4l2'
6
+
7
+ using TestUtil
8
+
9
+ class TestGetDriverName < Test::Unit::TestCase
10
+ class << self
11
+ def startup
12
+ end
13
+
14
+ def shutdown
15
+ end
16
+ end
17
+
18
+ def setup
19
+ end
20
+
21
+ def teardown
22
+ end
23
+
24
+ test "get driver name" do
25
+ cam = assert_nothing_raised {klass.open(Config.device)}
26
+
27
+ p cam.driver if Config.show_data?
28
+
29
+ assert_kind_of(String, cam.driver)
30
+
31
+ ensure
32
+ cam&.close
33
+ end
34
+ end
@@ -0,0 +1,58 @@
1
+ #! /usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ require 'test/unit'
5
+ require 'v4l2'
6
+
7
+ using TestUtil
8
+
9
+ class TestGetFormats < Test::Unit::TestCase
10
+ class << self
11
+ def startup
12
+ end
13
+
14
+ def shutdown
15
+ end
16
+ end
17
+
18
+ def setup
19
+ end
20
+
21
+ def teardown
22
+ end
23
+
24
+ test "get formats" do
25
+ cam = assert_nothing_raised {klass.open(Config.device)}
26
+
27
+ dat = cam.support_formats
28
+
29
+ pp dat if Config.show_data?
30
+
31
+ assert_kind_of(Array, dat)
32
+ assert_true(dat.all? {|item| item.kind_of?(klass::FormatDescription)})
33
+
34
+ ensure
35
+ cam&.close
36
+ end
37
+
38
+ test "atributes" do
39
+ cam = assert_nothing_raised {klass.open(Config.device)}
40
+
41
+ cam.support_formats.each { |item|
42
+ if item.kind_of?(klass::FormatDescription)
43
+ assert_respond_to(item, :description)
44
+ assert_respond_to(item, :fcc)
45
+
46
+ assert_kind_of(String, item.description)
47
+ assert_kind_of(String, item.fcc)
48
+ assert_equal(4, item.fcc.size)
49
+
50
+ else
51
+ add_failure("found unknown format item")
52
+ end
53
+ }
54
+
55
+ ensure
56
+ cam&.close
57
+ end
58
+ end
@@ -0,0 +1,56 @@
1
+ #! /usr/bin/env ruby
2
+ # coding: utf-8
3
+
4
+ require 'test/unit'
5
+ require 'v4l2'
6
+
7
+ using TestUtil
8
+
9
+ class TestGetFrameCapability < Test::Unit::TestCase
10
+ class << self
11
+ def startup
12
+ end
13
+
14
+ def shutdown
15
+ end
16
+ end
17
+
18
+ def setup
19
+ end
20
+
21
+ def teardown
22
+ end
23
+
24
+ test "get framecapabilities" do
25
+ cam = assert_nothing_raised {klass.open(Config.device)}
26
+
27
+ cam.support_formats.each { |fmt|
28
+ dat = cam.frame_capabilities(fmt.fcc)
29
+
30
+ pp dat if Config.show_data?
31
+
32
+ assert_kind_of(Array, dat)
33
+ assert_true(dat.all? {|item| item.kind_of?(klass::FrameCapability)})
34
+ }
35
+
36
+ ensure
37
+ cam&.close
38
+ end
39
+
40
+ test "atributes" do
41
+ cam = assert_nothing_raised {klass.open(Config.device)}
42
+
43
+ cam.support_formats.each { |fmt|
44
+ cam.frame_capabilities(fmt.fcc).each { |item|
45
+ assert_respond_to(item, :width)
46
+ assert_respond_to(item, :height)
47
+ assert_respond_to(item, :rate)
48
+
49
+ assert_true(item.rate.all? {|e| e.kind_of?(Rational)})
50
+ }
51
+ }
52
+
53
+ ensure
54
+ cam&.close
55
+ end
56
+ end