View Source Vtc.TestUtils.StreamDataVtc (vtc v0.17.5)
StreamData
generators for use in tests that involve custom Ecto types. For use in
property tests.
Link to this section Summary
Functions
Yields Vtc.Framerates, always yields true-frame or NTSC; never a mixture of the two.
Yields Vtc.Framestamp values.
Yields Vtc.Framestamp.Range values.
Yields rational values as %Ratio{} structs.
Runs a test, but does not fail if the operation causes a drop-frame overflow exception to occur.
Link to this section Types
@type framerate_opts() :: [{:type, :whole | :fractional | :drop | :non_drop}]
Describes the opts that can be passed to framerate/1
.
@type framestamp_opts() :: [ non_negative?: boolean(), rate: Vtc.Framerate.t(), rate_opts: framerate_opts() ]
Link to this section Functions
@spec framerate(framerate_opts()) :: StreamData.t(Vtc.Framerate.t())
Yields Vtc.Framerates, always yields true-frame or NTSC; never a mixture of the two.
options
Options
type
: The ntsc value all framerates should be generated with. Can be any of the following::whole
: All yielded framerates will be non-ntsc, whole-frame rates. Ex: 24/1 fps.:fractional
: All yielded framerates will be a random non-drop rate.:non_drop
: All yielded framerates will be NTSC, non-drop values.:drop
: All yielded framerates will be NTSC, drop-frame values.
A list of the above options may be passed and each value yielded from this generator will pick randomly from them.
Defaults to
[:whole, :fractional, :non_drop, :drop]
examples
Examples
property "prop test" do
check all(framerate <- StreamDataVtc.framerate()) do
...
end
end
@spec framestamp(framestamp_opts()) :: StreamData.t(Vtc.Framestamp.t())
Yields Vtc.Framestamp values.
options
Options
non_negative?
: Will only return values greater than or equal to00:00:00:00
.rate
: A framerate to use for this test. If one is not provided, a random one will be used.rate_opts
: Opts that should be passed toframerate/1
when generating the framerate. Has no effect ifrate
is set.
examples
Examples
property "returns input of negate/1" do
check all(positive <- StreamDataVtc.framestamp(non_negative?: true)) do
negative = Framestamp.minus(positive)
assert Framestamp.abs(positive) == Framestamp.abs(negative)
end
end
@spec framestamp_range( rate_opts: framerate_opts(), stamp_opts: framestamp_opts(), filter_empty?: boolean() ) :: StreamData.t(Vtc.Framestamp.Range.t())
Yields Vtc.Framestamp.Range values.
options
Options
rate_opts
: The options to pass to theframerate/1
generator for this range.stamp_opts
: The options to pass to theframestamp/1
generators for this range.filter_empty?
: Iftrue
, filters 0-length ranges from the output. Default:false
.
examples
Examples
property "returns input of negate/1" do
check all(positive <- StreamDataVtc.framestamp_range()) do
...
end
end
@spec rational(numerator: integer(), denominator: pos_integer(), positive?: boolean()) :: StreamData.t(Ratio.t())
Yields rational values as %Ratio{} structs.
options
Options
numerator
: A static value to use for the numerator of all generated rationals. Default: nil.denominator
: A static value to use for the denominator of all generated rationals. Default: nil.positive?
: If true, only positive values (greater than 0) are generated. Default:false
.
examples
Examples
property "prop test" do
check all(fraction <- StreamDataVtc.rational()) do
...
end
end
Runs a test, but does not fail if the operation causes a drop-frame overflow exception to occur.