1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
|
// SPDX-License-Identifier: Apache-2.0
// Copyright Contributors to the OpenTimelineIO project
#include "utils.h"
#include <opentimelineio/clip.h>
#include <opentimelineio/serializableCollection.h>
#include <opentimelineio/timeline.h>
#include <opentimelineio/track.h>
#include <iostream>
namespace otime = opentime::OPENTIME_VERSION;
namespace otio = opentimelineio::OPENTIMELINEIO_VERSION;
int
main(int argc, char** argv)
{
Tests tests;
tests.add_test(
"test_find_children", [] {
using namespace otio;
otio::SerializableObject::Retainer<otio::Clip> cl =
new otio::Clip();
otio::SerializableObject::Retainer<otio::Track> tr =
new otio::Track();
tr->append_child(cl);
otio::SerializableObject::Retainer<otio::Timeline> tl =
new otio::Timeline();
tl->tracks()->append_child(tr);
otio::SerializableObject::Retainer<otio::SerializableCollection>
sc = new otio::SerializableCollection();
sc->insert_child(0, tl);
OTIO_NS::ErrorStatus err;
auto result = sc->find_children<otio::Clip>(&err, {}, false);
assertEqual(result.size(), 1);
assertEqual(result[0].value, cl.value);
});
tests.add_test(
"test_find_children_search_range", [] {
using namespace otio;
const TimeRange range(RationalTime(0.0, 24.0), RationalTime(24.0, 24.0));
otio::SerializableObject::Retainer<otio::Clip> cl0 =
new otio::Clip();
cl0->set_source_range(range);
otio::SerializableObject::Retainer<otio::Clip> cl1 =
new otio::Clip();
cl1->set_source_range(range);
otio::SerializableObject::Retainer<otio::Clip> cl2 =
new otio::Clip();
cl2->set_source_range(range);
otio::SerializableObject::Retainer<otio::Track> tr =
new otio::Track();
tr->append_child(cl0);
tr->append_child(cl1);
tr->append_child(cl2);
otio::SerializableObject::Retainer<otio::Timeline> tl =
new otio::Timeline();
tl->tracks()->append_child(tr);
otio::SerializableObject::Retainer<otio::SerializableCollection>
sc = new otio::SerializableCollection();
sc->insert_child(0, tl);
OTIO_NS::ErrorStatus err;
auto result = sc->find_children<otio::Clip>(&err, range);
assertEqual(result.size(), 1);
assertEqual(result[0].value, cl0.value);
});
tests.add_test(
"test_find_children_shallow_search", [] {
using namespace otio;
otio::SerializableObject::Retainer<otio::Clip> cl =
new otio::Clip();
otio::SerializableObject::Retainer<otio::Track> tr =
new otio::Track();
tr->append_child(cl);
otio::SerializableObject::Retainer<otio::Timeline> tl =
new otio::Timeline();
tl->tracks()->append_child(tr);
otio::SerializableObject::Retainer<otio::SerializableCollection>
sc = new otio::SerializableCollection();
sc->insert_child(0, tl);
OTIO_NS::ErrorStatus err;
auto result = sc->find_children<otio::Clip>(&err, std::nullopt, true);
assertEqual(result.size(), 0);
result = sc->find_children<otio::Clip>(&err, std::nullopt, false);
assertEqual(result.size(), 1);
assertEqual(result[0].value, cl.value);
});
tests.run(argc, argv);
return 0;
}
|