1
+ // ////////////////////////////////////////////////////////////////////////
2
+ //
3
+ // Copyright (c) 2018, Image Engine Design Inc. All rights reserved.
4
+ //
5
+ // Redistribution and use in source and binary forms, with or without
6
+ // modification, are permitted provided that the following conditions are
7
+ // met:
8
+ //
9
+ // * Redistributions of source code must retain the above copyright
10
+ // notice, this list of conditions and the following disclaimer.
11
+ //
12
+ // * Redistributions in binary form must reproduce the above copyright
13
+ // notice, this list of conditions and the following disclaimer in the
14
+ // documentation and/or other materials provided with the distribution.
15
+ //
16
+ // * Neither the name of Image Engine Design nor the names of any
17
+ // other contributors to this software may be used to endorse or
18
+ // promote products derived from this software without specific prior
19
+ // written permission.
20
+ //
21
+ // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
22
+ // IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
23
+ // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
24
+ // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
25
+ // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
26
+ // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
27
+ // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
28
+ // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
29
+ // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
30
+ // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
31
+ // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32
+ //
33
+ // ////////////////////////////////////////////////////////////////////////
34
+
35
+
36
+ #include < IECoreScene/SceneInterface.h>
37
+ #include " PathMatcherTest.h"
38
+
39
+ #include " IECoreScene/SceneInterface.h"
40
+
41
+ #include " IECore/PathMatcher.h"
42
+
43
+ namespace IECore
44
+ {
45
+
46
+ struct PathMatcherTest
47
+ {
48
+ void testPathMatcherIterator ()
49
+ {
50
+ IECore::PathMatcher pathMatcher;
51
+
52
+ pathMatcher.addPath (" /a/b/c" );
53
+ pathMatcher.addPath (" /a/b/c/d/e/f" );
54
+ pathMatcher.addPath (" /a/b/c/d/g/h" );
55
+
56
+ BOOST_CHECK ( pathMatcher.find ({ IECore::InternedString ( " a" ) } ) != pathMatcher.end () );
57
+ BOOST_CHECK ( pathMatcher.find ({ IECore::InternedString ( " a" ), IECore::InternedString ( " b" ) } ) != pathMatcher.end () );
58
+ BOOST_CHECK ( pathMatcher.find ({ IECore::InternedString ( " a" ), IECore::InternedString ( " b" ), IECore::InternedString ( " c" ) } ) != pathMatcher.end () );
59
+
60
+ IECore::RawIterator x = pathMatcher.find ( { IECore::InternedString ( " a" ), IECore::InternedString ( " b" ), IECore::InternedString ( " c" ), IECore::InternedString ( " d" ) } );
61
+
62
+ // Finds the next terminal node
63
+ IECore::Iterator y = IECore::PathMatcher::Iterator ( x );
64
+
65
+ // This check to see if the path we're querying has been explicitly added.
66
+ BOOST_CHECK ( myIt != x);
67
+ }
68
+ };
69
+
70
+ struct PathMatcherTestSuite : public boost ::unit_test::test_suite
71
+ {
72
+
73
+ PathMatcherTestSuite () : boost::unit_test::test_suite( " PathMatcherTestSuite" )
74
+ {
75
+ boost::shared_ptr<PathMatcherTest> instance ( new PathMatcherTest () );
76
+ add ( BOOST_CLASS_TEST_CASE ( &PathMatcherTest::testPathMatcherIterator, instance ) );
77
+ }
78
+ };
79
+
80
+ void addPathMatcherTest (boost::unit_test::test_suite* test)
81
+ {
82
+ test->add ( new PathMatcherTestSuite () );
83
+ }
84
+
85
+ } // IECore
0 commit comments