framecurve 1.0.2 → 2.0.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.
- data/History.txt +8 -0
- data/README.rdoc +31 -6
- data/bin/framecurve_from_fcp_xml +10 -0
- data/framecurve.gemspec +13 -3
- data/lib/framecurve.rb +2 -2
- data/lib/framecurve/extractors/fcp_xml.rb +97 -0
- data/lib/framecurve/extractors/xml_bridge.rb +56 -0
- data/lib/framecurve/parser.rb +2 -1
- data/lib/framecurve/serializer.rb +31 -5
- data/lib/framecurve/validator.rb +11 -6
- data/test/fixtures/fcp_xml/CountDOWN.xml +812 -0
- data/test/fixtures/framecurves/err-neg-frames.framecurve.txt +3 -0
- data/test/fixtures/framecurves/err-no-tuples.framecurve.txt +2 -0
- data/test/fixtures/framecurves/incorrect.extension +6 -0
- data/test/fixtures/framecurves/sample_framecurve1.framecurve.txt +6 -0
- data/test/test_framecurve_from_fcp_xml_binary.rb +39 -0
- data/test/test_framecurve_serializer.rb +21 -3
- data/test/test_framecurve_validator.rb +43 -8
- metadata +21 -10
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'helper'
|
2
|
+
require "fileutils"
|
3
|
+
|
4
|
+
class TestFramecurveFromFCPXML < Test::Unit::TestCase
|
5
|
+
BINARY = File.expand_path(File.dirname(__FILE__) + "/../bin/framecurve_from_fcp_xml")
|
6
|
+
FILE_PATH = File.expand_path(File.dirname(__FILE__) + "/fixtures/fcp_xml/CountDOWN.xml")
|
7
|
+
HERE = File.expand_path(File.dirname(__FILE__))
|
8
|
+
|
9
|
+
# Run the binary under test with passed options, and return [exit_code, stdout_content, stderr_content]
|
10
|
+
def cli(commandline_arguments)
|
11
|
+
CLITest.new(BINARY).run(commandline_arguments)
|
12
|
+
end
|
13
|
+
|
14
|
+
def teardown
|
15
|
+
Dir.glob(File.dirname(FILE_PATH) + "/*.framecurve.txt").each do | f |
|
16
|
+
File.unlink(f)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_cli_with_valid_file
|
21
|
+
s, o, e = cli(FILE_PATH)
|
22
|
+
|
23
|
+
assert_equal 0, s
|
24
|
+
assert e.include?("timewarp")
|
25
|
+
|
26
|
+
curve = Framecurve::Parser.new.parse(HERE + "/fixtures/fcp_xml/CountDOWN.xml.SEQ1-V1-CLIP1.framecurve.txt")
|
27
|
+
|
28
|
+
assert_equal 11, curve.length
|
29
|
+
assert_match /From FCP XML/, curve[2].text
|
30
|
+
assert_equal "Information from /xmeml/project/children/sequence/media/video/track/clipitem[1]", curve[3].text
|
31
|
+
assert_equal Framecurve::Tuple.new(1, 13.0), curve[4]
|
32
|
+
assert_equal Framecurve::Tuple.new(51, 63.0), curve[-1]
|
33
|
+
|
34
|
+
curve2 = Framecurve::Parser.new.parse(HERE + "/fixtures/fcp_xml/CountDOWN.xml.SEQ1-V1-CLIP3.framecurve.txt")
|
35
|
+
assert_equal 11, curve.length
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
@@ -1,17 +1,35 @@
|
|
1
1
|
require 'helper'
|
2
2
|
|
3
3
|
class TestFramecurveSerializer < Test::Unit::TestCase
|
4
|
-
def
|
4
|
+
def test_writes_preamble_if_needed
|
5
5
|
f = Framecurve::Curve.new(Framecurve::Tuple.new(10, 123))
|
6
6
|
s = StringIO.new
|
7
7
|
Framecurve::Serializer.new.serialize(s, f)
|
8
8
|
assert_equal "# http://framecurve.org/specification-v1\n# at_frame\tuse_frame_of_source\n10\t123.00000\r\n", s.string
|
9
9
|
end
|
10
10
|
|
11
|
-
def
|
11
|
+
def test_writes_only_existing_frames
|
12
12
|
f = Framecurve::Curve.new(Framecurve::Tuple.new(10, 123), Framecurve::Tuple.new(12, 456))
|
13
13
|
s = StringIO.new
|
14
|
+
|
14
15
|
Framecurve::Serializer.new.serialize(s, f)
|
15
|
-
assert_equal "# http://framecurve.org/specification-v1\n# at_frame\tuse_frame_of_source\n10\t123.00000\r\
|
16
|
+
assert_equal "# http://framecurve.org/specification-v1\n# at_frame\tuse_frame_of_source\n10\t123.00000\r\n12\t456.00000\r\n", s.string
|
16
17
|
end
|
18
|
+
|
19
|
+
def test_validate_and_serialize_with_invalid_input
|
20
|
+
f = Framecurve::Curve.new
|
21
|
+
s = StringIO.new
|
22
|
+
assert_raise(Framecurve::Malformed) do
|
23
|
+
Framecurve::Serializer.new.validate_and_serialize(s, f)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_validate_and_serialize_with_valid_input_works_without_errors
|
28
|
+
f = Framecurve::Curve.new(Framecurve::Tuple.new(10, 123))
|
29
|
+
s = StringIO.new
|
30
|
+
|
31
|
+
assert_nothing_raised { Framecurve::Serializer.new.validate_and_serialize(s, f) }
|
32
|
+
assert_equal "# http://framecurve.org/specification-v1\n# at_frame\tuse_frame_of_source\n10\t123.00000\r\n", s.string
|
33
|
+
end
|
34
|
+
|
17
35
|
end
|
@@ -77,12 +77,47 @@ class TestFramecurveValidator < Test::Unit::TestCase
|
|
77
77
|
end
|
78
78
|
|
79
79
|
def test_should_error_out_with_neg_source_and_dest_values
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
"The
|
86
|
-
|
87
|
-
|
80
|
+
c = Framecurve::Curve.new( Framecurve::Tuple.new(-10, 123.4), Framecurve::Tuple.new(1, -345.67) )
|
81
|
+
v = Framecurve::Validator.new
|
82
|
+
v.validate(c)
|
83
|
+
assert v.any_errors?
|
84
|
+
errs = ["The line 1 had it's at_frame value (-10) below 1. The spec mandates at_frame >= 1.",
|
85
|
+
"The line 2 had a use_frame_of_source value (-345.67000) below 0. The spec mandates use_frame_of_source >= 0."]
|
86
|
+
assert_equal errs, v.errors
|
87
|
+
end
|
88
|
+
|
89
|
+
def test_parse_from_err_bad_extension
|
90
|
+
v = Framecurve::Validator.new
|
91
|
+
v.parse_and_validate(File.dirname(__FILE__) + "/fixtures/framecurves/incorrect.extension")
|
92
|
+
assert_equal ["The framecurve file has to have the .framecurve.txt double extension, but had \".extension\""], v.errors
|
93
|
+
end
|
94
|
+
|
95
|
+
def test_parse_from_err_neg_frames
|
96
|
+
v = Framecurve::Validator.new
|
97
|
+
v.parse_and_validate(File.dirname(__FILE__) + "/fixtures/framecurves/err-neg-frames.framecurve.txt")
|
98
|
+
assert_equal ["The line 3 had it's at_frame value (-1) below 1. The spec mandates at_frame >= 1."], v.errors
|
99
|
+
end
|
100
|
+
|
101
|
+
def test_parse_from_err_no_tuples
|
102
|
+
v = Framecurve::Validator.new
|
103
|
+
v.parse_and_validate(File.dirname(__FILE__) + "/fixtures/framecurves/err-no-tuples.framecurve.txt")
|
104
|
+
assert_equal ["The framecurve did not contain any frame correlation records"], v.errors
|
105
|
+
end
|
106
|
+
|
107
|
+
def test_should_warn_without_preamble_url
|
108
|
+
c = Framecurve::Curve.new( Framecurve::Tuple.new(10, 123.4))
|
109
|
+
v = Framecurve::Validator.new
|
110
|
+
v.validate(c)
|
111
|
+
assert v.any_warnings?
|
112
|
+
assert_equal "It is recommended that a framecurve starts with a comment with the specification URL", v.warnings[0]
|
113
|
+
end
|
114
|
+
|
115
|
+
def test_should_warn_without_preamble_headers
|
116
|
+
c = Framecurve::Curve.new( Framecurve::Comment.new("http://framecurve.org/specification-v1"), Framecurve::Tuple.new(10, 123.4))
|
117
|
+
v = Framecurve::Validator.new
|
118
|
+
v.validate(c)
|
119
|
+
assert v.any_warnings?
|
120
|
+
assert_equal "It is recommended for the second comment to provide a column header", v.warnings[0]
|
121
|
+
end
|
122
|
+
|
88
123
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: framecurve
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2012-01-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: term-ansicolor
|
16
|
-
requirement: &
|
16
|
+
requirement: &11839020 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *11839020
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: jeweler
|
27
|
-
requirement: &
|
27
|
+
requirement: &11838780 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 1.6.4
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *11838780
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rake
|
38
|
-
requirement: &
|
38
|
+
requirement: &11838540 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *11838540
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: cli_test
|
49
|
-
requirement: &
|
49
|
+
requirement: &11838300 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,11 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *11838300
|
58
58
|
description: ! ' Parser, validation and interpolation'
|
59
59
|
email: me@julik.nl
|
60
60
|
executables:
|
61
|
+
- framecurve_from_fcp_xml
|
61
62
|
- framecurve_validator
|
62
63
|
extensions: []
|
63
64
|
extra_rdoc_files:
|
@@ -66,21 +67,31 @@ extra_rdoc_files:
|
|
66
67
|
files:
|
67
68
|
- .document
|
68
69
|
- Gemfile
|
70
|
+
- History.txt
|
69
71
|
- LICENSE.txt
|
70
72
|
- README.rdoc
|
71
73
|
- Rakefile
|
74
|
+
- bin/framecurve_from_fcp_xml
|
72
75
|
- bin/framecurve_validator
|
73
76
|
- framecurve.gemspec
|
74
77
|
- lib/framecurve.rb
|
75
78
|
- lib/framecurve/comment.rb
|
76
79
|
- lib/framecurve/curve.rb
|
80
|
+
- lib/framecurve/extractors/fcp_xml.rb
|
81
|
+
- lib/framecurve/extractors/xml_bridge.rb
|
77
82
|
- lib/framecurve/parser.rb
|
78
83
|
- lib/framecurve/serializer.rb
|
79
84
|
- lib/framecurve/tuple.rb
|
80
85
|
- lib/framecurve/validator.rb
|
86
|
+
- test/fixtures/fcp_xml/CountDOWN.xml
|
87
|
+
- test/fixtures/framecurves/err-neg-frames.framecurve.txt
|
88
|
+
- test/fixtures/framecurves/err-no-tuples.framecurve.txt
|
89
|
+
- test/fixtures/framecurves/incorrect.extension
|
90
|
+
- test/fixtures/framecurves/sample_framecurve1.framecurve.txt
|
81
91
|
- test/helper.rb
|
82
92
|
- test/test_framecurve_comment.rb
|
83
93
|
- test/test_framecurve_curve.rb
|
94
|
+
- test/test_framecurve_from_fcp_xml_binary.rb
|
84
95
|
- test/test_framecurve_parser.rb
|
85
96
|
- test/test_framecurve_serializer.rb
|
86
97
|
- test/test_framecurve_tuple.rb
|