ClipStackTest.cpp revision 80214e26c57c5fea954006400852e8999e201923
1ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com
2ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com/*
3ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Copyright 2011 Google Inc.
4ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com *
5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Use of this source code is governed by a BSD-style license that can be
6ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * found in the LICENSE file.
7ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com */
8bdee9fc778d4387d805d717f2cd7fc7074991fdbreed@google.com#include "Test.h"
9bdee9fc778d4387d805d717f2cd7fc7074991fdbreed@google.com#include "SkClipStack.h"
101e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org#include "SkPath.h"
111e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org#include "SkRect.h"
121e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org
1380214e26c57c5fea954006400852e8999e201923robertphillips@google.com
1480214e26c57c5fea954006400852e8999e201923robertphillips@google.com
151e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.orgstatic void test_assign_and_comparison(skiatest::Reporter* reporter) {
161e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    SkClipStack s;
17d9f2dea5328c9ab455852f2e4928cca7c71c6b05reed@google.com    bool doAA = false;
181e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org
1980214e26c57c5fea954006400852e8999e201923robertphillips@google.com    REPORTER_ASSERT(reporter, 0 == s.getSaveCount());
2080214e26c57c5fea954006400852e8999e201923robertphillips@google.com
211e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    // Build up a clip stack with a path, an empty clip, and a rect.
221e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    s.save();
2380214e26c57c5fea954006400852e8999e201923robertphillips@google.com    REPORTER_ASSERT(reporter, 1 == s.getSaveCount());
2480214e26c57c5fea954006400852e8999e201923robertphillips@google.com
251e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    SkPath p;
261e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    p.moveTo(5, 6);
271e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    p.lineTo(7, 8);
281e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    p.lineTo(5, 9);
291e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    p.close();
30d9f2dea5328c9ab455852f2e4928cca7c71c6b05reed@google.com    s.clipDevPath(p, SkRegion::kIntersect_Op, doAA);
311e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org
321e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    s.save();
3380214e26c57c5fea954006400852e8999e201923robertphillips@google.com    REPORTER_ASSERT(reporter, 2 == s.getSaveCount());
3480214e26c57c5fea954006400852e8999e201923robertphillips@google.com
351e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    SkRect r = SkRect::MakeLTRB(1, 2, 3, 4);
36d9f2dea5328c9ab455852f2e4928cca7c71c6b05reed@google.com    s.clipDevRect(r, SkRegion::kIntersect_Op, doAA);
371e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    r = SkRect::MakeLTRB(10, 11, 12, 13);
38d9f2dea5328c9ab455852f2e4928cca7c71c6b05reed@google.com    s.clipDevRect(r, SkRegion::kIntersect_Op, doAA);
391e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org
401e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    s.save();
4180214e26c57c5fea954006400852e8999e201923robertphillips@google.com    REPORTER_ASSERT(reporter, 3 == s.getSaveCount());
4280214e26c57c5fea954006400852e8999e201923robertphillips@google.com
431e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    r = SkRect::MakeLTRB(14, 15, 16, 17);
44d9f2dea5328c9ab455852f2e4928cca7c71c6b05reed@google.com    s.clipDevRect(r, SkRegion::kUnion_Op, doAA);
451e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org
461e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    // Test that assignment works.
471e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    SkClipStack copy = s;
481e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    REPORTER_ASSERT(reporter, s == copy);
491e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org
501e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    // Test that different save levels triggers not equal.
511e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    s.restore();
5280214e26c57c5fea954006400852e8999e201923robertphillips@google.com    REPORTER_ASSERT(reporter, 2 == s.getSaveCount());
531e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    REPORTER_ASSERT(reporter, s != copy);
541e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org
551e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    // Test that an equal, but not copied version is equal.
561e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    s.save();
5780214e26c57c5fea954006400852e8999e201923robertphillips@google.com    REPORTER_ASSERT(reporter, 3 == s.getSaveCount());
5880214e26c57c5fea954006400852e8999e201923robertphillips@google.com
591e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    r = SkRect::MakeLTRB(14, 15, 16, 17);
60d9f2dea5328c9ab455852f2e4928cca7c71c6b05reed@google.com    s.clipDevRect(r, SkRegion::kUnion_Op, doAA);
611e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    REPORTER_ASSERT(reporter, s == copy);
621e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org
631e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    // Test that a different op on one level triggers not equal.
641e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    s.restore();
6580214e26c57c5fea954006400852e8999e201923robertphillips@google.com    REPORTER_ASSERT(reporter, 2 == s.getSaveCount());
661e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    s.save();
6780214e26c57c5fea954006400852e8999e201923robertphillips@google.com    REPORTER_ASSERT(reporter, 3 == s.getSaveCount());
6880214e26c57c5fea954006400852e8999e201923robertphillips@google.com
691e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    r = SkRect::MakeLTRB(14, 15, 16, 17);
70d9f2dea5328c9ab455852f2e4928cca7c71c6b05reed@google.com    s.clipDevRect(r, SkRegion::kIntersect_Op, doAA);
711e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    REPORTER_ASSERT(reporter, s != copy);
721e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org
731e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    // Test that different state (clip type) triggers not equal.
744c4337291d873c4f27cb7903645863dc65b98a7btomhudson@google.com    // NO LONGER VALID: if a path contains only a rect, we turn
754c4337291d873c4f27cb7903645863dc65b98a7btomhudson@google.com    // it into a bare rect for performance reasons (working
764c4337291d873c4f27cb7903645863dc65b98a7btomhudson@google.com    // around Chromium/JavaScript bad pattern).
774c4337291d873c4f27cb7903645863dc65b98a7btomhudson@google.com/*
781e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    s.restore();
791e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    s.save();
801e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    SkPath rp;
811e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    rp.addRect(r);
82d9f2dea5328c9ab455852f2e4928cca7c71c6b05reed@google.com    s.clipDevPath(rp, SkRegion::kUnion_Op, doAA);
831e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    REPORTER_ASSERT(reporter, s != copy);
844c4337291d873c4f27cb7903645863dc65b98a7btomhudson@google.com*/
851e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org
861e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    // Test that different rects triggers not equal.
871e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    s.restore();
8880214e26c57c5fea954006400852e8999e201923robertphillips@google.com    REPORTER_ASSERT(reporter, 2 == s.getSaveCount());
891e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    s.save();
9080214e26c57c5fea954006400852e8999e201923robertphillips@google.com    REPORTER_ASSERT(reporter, 3 == s.getSaveCount());
9180214e26c57c5fea954006400852e8999e201923robertphillips@google.com
921e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    r = SkRect::MakeLTRB(24, 25, 26, 27);
93d9f2dea5328c9ab455852f2e4928cca7c71c6b05reed@google.com    s.clipDevRect(r, SkRegion::kUnion_Op, doAA);
941e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    REPORTER_ASSERT(reporter, s != copy);
951e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org
961e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    // Sanity check
971e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    s.restore();
9880214e26c57c5fea954006400852e8999e201923robertphillips@google.com    REPORTER_ASSERT(reporter, 2 == s.getSaveCount());
9980214e26c57c5fea954006400852e8999e201923robertphillips@google.com
1001e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    copy.restore();
10180214e26c57c5fea954006400852e8999e201923robertphillips@google.com    REPORTER_ASSERT(reporter, 2 == copy.getSaveCount());
1021e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    REPORTER_ASSERT(reporter, s == copy);
1031e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    s.restore();
10480214e26c57c5fea954006400852e8999e201923robertphillips@google.com    REPORTER_ASSERT(reporter, 1 == s.getSaveCount());
1051e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    copy.restore();
10680214e26c57c5fea954006400852e8999e201923robertphillips@google.com    REPORTER_ASSERT(reporter, 1 == copy.getSaveCount());
1071e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    REPORTER_ASSERT(reporter, s == copy);
1081e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org
1091e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    // Test that different paths triggers not equal.
1101e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    s.restore();
11180214e26c57c5fea954006400852e8999e201923robertphillips@google.com    REPORTER_ASSERT(reporter, 0 == s.getSaveCount());
1121e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    s.save();
11380214e26c57c5fea954006400852e8999e201923robertphillips@google.com    REPORTER_ASSERT(reporter, 1 == s.getSaveCount());
11480214e26c57c5fea954006400852e8999e201923robertphillips@google.com
1151e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    p.addRect(r);
116d9f2dea5328c9ab455852f2e4928cca7c71c6b05reed@google.com    s.clipDevPath(p, SkRegion::kIntersect_Op, doAA);
1171e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    REPORTER_ASSERT(reporter, s != copy);
1181e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org}
119bdee9fc778d4387d805d717f2cd7fc7074991fdbreed@google.com
120bdee9fc778d4387d805d717f2cd7fc7074991fdbreed@google.comstatic void assert_count(skiatest::Reporter* reporter, const SkClipStack& stack,
121bdee9fc778d4387d805d717f2cd7fc7074991fdbreed@google.com                         int count) {
12280214e26c57c5fea954006400852e8999e201923robertphillips@google.com    SkClipStack::B2TIter iter(stack);
123bdee9fc778d4387d805d717f2cd7fc7074991fdbreed@google.com    int counter = 0;
124bdee9fc778d4387d805d717f2cd7fc7074991fdbreed@google.com    while (iter.next()) {
125bdee9fc778d4387d805d717f2cd7fc7074991fdbreed@google.com        counter += 1;
126bdee9fc778d4387d805d717f2cd7fc7074991fdbreed@google.com    }
127bdee9fc778d4387d805d717f2cd7fc7074991fdbreed@google.com    REPORTER_ASSERT(reporter, count == counter);
128bdee9fc778d4387d805d717f2cd7fc7074991fdbreed@google.com}
129bdee9fc778d4387d805d717f2cd7fc7074991fdbreed@google.com
13080214e26c57c5fea954006400852e8999e201923robertphillips@google.comstatic void test_iterators(skiatest::Reporter* reporter) {
13180214e26c57c5fea954006400852e8999e201923robertphillips@google.com    SkClipStack stack;
13280214e26c57c5fea954006400852e8999e201923robertphillips@google.com
13380214e26c57c5fea954006400852e8999e201923robertphillips@google.com    static const SkRect gRects[] = {
13480214e26c57c5fea954006400852e8999e201923robertphillips@google.com        { 0,   0,  40,  40 },
13580214e26c57c5fea954006400852e8999e201923robertphillips@google.com        { 60,  0, 100,  40 },
13680214e26c57c5fea954006400852e8999e201923robertphillips@google.com        { 0,  60,  40, 100 },
13780214e26c57c5fea954006400852e8999e201923robertphillips@google.com        { 60, 60, 100, 100 }
13880214e26c57c5fea954006400852e8999e201923robertphillips@google.com    };
13980214e26c57c5fea954006400852e8999e201923robertphillips@google.com
14080214e26c57c5fea954006400852e8999e201923robertphillips@google.com    for (size_t i = 0; i < SK_ARRAY_COUNT(gRects); i++) {
14180214e26c57c5fea954006400852e8999e201923robertphillips@google.com        // the union op will prevent these from being fused together
14280214e26c57c5fea954006400852e8999e201923robertphillips@google.com        stack.clipDevRect(gRects[i], SkRegion::kUnion_Op, false);
14380214e26c57c5fea954006400852e8999e201923robertphillips@google.com    }
14480214e26c57c5fea954006400852e8999e201923robertphillips@google.com
14580214e26c57c5fea954006400852e8999e201923robertphillips@google.com    assert_count(reporter, stack, 4);
14680214e26c57c5fea954006400852e8999e201923robertphillips@google.com
14780214e26c57c5fea954006400852e8999e201923robertphillips@google.com    // bottom to top iteration
14880214e26c57c5fea954006400852e8999e201923robertphillips@google.com    {
14980214e26c57c5fea954006400852e8999e201923robertphillips@google.com        const SkClipStack::B2TIter::Clip* clip = NULL;
15080214e26c57c5fea954006400852e8999e201923robertphillips@google.com
15180214e26c57c5fea954006400852e8999e201923robertphillips@google.com        SkClipStack::B2TIter iter(stack);
15280214e26c57c5fea954006400852e8999e201923robertphillips@google.com        int i;
15380214e26c57c5fea954006400852e8999e201923robertphillips@google.com
15480214e26c57c5fea954006400852e8999e201923robertphillips@google.com        for (i = 0, clip = iter.next(); clip; ++i, clip = iter.next()) {
15580214e26c57c5fea954006400852e8999e201923robertphillips@google.com            REPORTER_ASSERT(reporter, *clip->fRect == gRects[i]);
15680214e26c57c5fea954006400852e8999e201923robertphillips@google.com        }
15780214e26c57c5fea954006400852e8999e201923robertphillips@google.com
15880214e26c57c5fea954006400852e8999e201923robertphillips@google.com        SkASSERT(i == 4);
15980214e26c57c5fea954006400852e8999e201923robertphillips@google.com    }
16080214e26c57c5fea954006400852e8999e201923robertphillips@google.com
16180214e26c57c5fea954006400852e8999e201923robertphillips@google.com    // top to bottom iteration
16280214e26c57c5fea954006400852e8999e201923robertphillips@google.com    {
16380214e26c57c5fea954006400852e8999e201923robertphillips@google.com        const SkClipStack::Iter::Clip* clip = NULL;
16480214e26c57c5fea954006400852e8999e201923robertphillips@google.com
16580214e26c57c5fea954006400852e8999e201923robertphillips@google.com        SkClipStack::Iter iter(stack, SkClipStack::Iter::kTop_IterStart);
16680214e26c57c5fea954006400852e8999e201923robertphillips@google.com        int i;
16780214e26c57c5fea954006400852e8999e201923robertphillips@google.com
16880214e26c57c5fea954006400852e8999e201923robertphillips@google.com        for (i = 3, clip = iter.prev(); clip; --i, clip = iter.prev()) {
16980214e26c57c5fea954006400852e8999e201923robertphillips@google.com            REPORTER_ASSERT(reporter, *clip->fRect == gRects[i]);
17080214e26c57c5fea954006400852e8999e201923robertphillips@google.com        }
17180214e26c57c5fea954006400852e8999e201923robertphillips@google.com
17280214e26c57c5fea954006400852e8999e201923robertphillips@google.com        SkASSERT(i == -1);
17380214e26c57c5fea954006400852e8999e201923robertphillips@google.com    }
17480214e26c57c5fea954006400852e8999e201923robertphillips@google.com
17580214e26c57c5fea954006400852e8999e201923robertphillips@google.com    // skipToTopmost
17680214e26c57c5fea954006400852e8999e201923robertphillips@google.com    {
17780214e26c57c5fea954006400852e8999e201923robertphillips@google.com        const SkClipStack::Iter::Clip*clip = NULL;
17880214e26c57c5fea954006400852e8999e201923robertphillips@google.com
17980214e26c57c5fea954006400852e8999e201923robertphillips@google.com        SkClipStack::Iter iter(stack, SkClipStack::Iter::kBottom_IterStart);
18080214e26c57c5fea954006400852e8999e201923robertphillips@google.com
18180214e26c57c5fea954006400852e8999e201923robertphillips@google.com        clip = iter.skipToTopmost(SkRegion::kUnion_Op);
18280214e26c57c5fea954006400852e8999e201923robertphillips@google.com        REPORTER_ASSERT(reporter, *clip->fRect == gRects[3]);
18380214e26c57c5fea954006400852e8999e201923robertphillips@google.com    }
18480214e26c57c5fea954006400852e8999e201923robertphillips@google.com}
18580214e26c57c5fea954006400852e8999e201923robertphillips@google.com
186bdee9fc778d4387d805d717f2cd7fc7074991fdbreed@google.comstatic void TestClipStack(skiatest::Reporter* reporter) {
187bdee9fc778d4387d805d717f2cd7fc7074991fdbreed@google.com    SkClipStack stack;
188bdee9fc778d4387d805d717f2cd7fc7074991fdbreed@google.com
18980214e26c57c5fea954006400852e8999e201923robertphillips@google.com    REPORTER_ASSERT(reporter, 0 == stack.getSaveCount());
190bdee9fc778d4387d805d717f2cd7fc7074991fdbreed@google.com    assert_count(reporter, stack, 0);
191bdee9fc778d4387d805d717f2cd7fc7074991fdbreed@google.com
192bdee9fc778d4387d805d717f2cd7fc7074991fdbreed@google.com    static const SkIRect gRects[] = {
193bdee9fc778d4387d805d717f2cd7fc7074991fdbreed@google.com        { 0, 0, 100, 100 },
194bdee9fc778d4387d805d717f2cd7fc7074991fdbreed@google.com        { 25, 25, 125, 125 },
195bdee9fc778d4387d805d717f2cd7fc7074991fdbreed@google.com        { 0, 0, 1000, 1000 },
196bdee9fc778d4387d805d717f2cd7fc7074991fdbreed@google.com        { 0, 0, 75, 75 }
197bdee9fc778d4387d805d717f2cd7fc7074991fdbreed@google.com    };
198bdee9fc778d4387d805d717f2cd7fc7074991fdbreed@google.com    for (size_t i = 0; i < SK_ARRAY_COUNT(gRects); i++) {
199d9f2dea5328c9ab455852f2e4928cca7c71c6b05reed@google.com        stack.clipDevRect(gRects[i], SkRegion::kIntersect_Op);
200bdee9fc778d4387d805d717f2cd7fc7074991fdbreed@google.com    }
201bdee9fc778d4387d805d717f2cd7fc7074991fdbreed@google.com
202bdee9fc778d4387d805d717f2cd7fc7074991fdbreed@google.com    // all of the above rects should have been intersected, leaving only 1 rect
20380214e26c57c5fea954006400852e8999e201923robertphillips@google.com    SkClipStack::B2TIter iter(stack);
20480214e26c57c5fea954006400852e8999e201923robertphillips@google.com    const SkClipStack::B2TIter::Clip* clip = iter.next();
2052047f00e4698f83499ab91911999a65c21a951c9epoger@google.com    SkRect answer;
2062047f00e4698f83499ab91911999a65c21a951c9epoger@google.com    answer.iset(25, 25, 75, 75);
207bdee9fc778d4387d805d717f2cd7fc7074991fdbreed@google.com
208bdee9fc778d4387d805d717f2cd7fc7074991fdbreed@google.com    REPORTER_ASSERT(reporter, clip);
209bdee9fc778d4387d805d717f2cd7fc7074991fdbreed@google.com    REPORTER_ASSERT(reporter, clip->fRect);
210bdee9fc778d4387d805d717f2cd7fc7074991fdbreed@google.com    REPORTER_ASSERT(reporter, !clip->fPath);
211bdee9fc778d4387d805d717f2cd7fc7074991fdbreed@google.com    REPORTER_ASSERT(reporter, SkRegion::kIntersect_Op == clip->fOp);
212bdee9fc778d4387d805d717f2cd7fc7074991fdbreed@google.com    REPORTER_ASSERT(reporter, *clip->fRect == answer);
213bdee9fc778d4387d805d717f2cd7fc7074991fdbreed@google.com    // now check that we only had one in our iterator
214bdee9fc778d4387d805d717f2cd7fc7074991fdbreed@google.com    REPORTER_ASSERT(reporter, !iter.next());
215bdee9fc778d4387d805d717f2cd7fc7074991fdbreed@google.com
216bdee9fc778d4387d805d717f2cd7fc7074991fdbreed@google.com    stack.reset();
21780214e26c57c5fea954006400852e8999e201923robertphillips@google.com    REPORTER_ASSERT(reporter, 0 == stack.getSaveCount());
218bdee9fc778d4387d805d717f2cd7fc7074991fdbreed@google.com    assert_count(reporter, stack, 0);
2191e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org
2201e1c36f4f89ad39e1d248edb745919e493242c68vandebo@chromium.org    test_assign_and_comparison(reporter);
22180214e26c57c5fea954006400852e8999e201923robertphillips@google.com    test_iterators(reporter);
222bdee9fc778d4387d805d717f2cd7fc7074991fdbreed@google.com}
223bdee9fc778d4387d805d717f2cd7fc7074991fdbreed@google.com
224bdee9fc778d4387d805d717f2cd7fc7074991fdbreed@google.com#include "TestClassDef.h"
225bdee9fc778d4387d805d717f2cd7fc7074991fdbreed@google.comDEFINE_TESTCLASS("ClipStack", TestClipStackClass, TestClipStack)
226