15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "ui/gfx/range/range.h"
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(RangeTest, EmptyInit) {
958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  gfx::Range r;
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(0U, r.start());
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(0U, r.end());
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(0U, r.length());
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(r.is_reversed());
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(r.is_empty());
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(r.IsValid());
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(0U, r.GetMin());
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(0U, r.GetMax());
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(RangeTest, StartEndInit) {
2158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  gfx::Range r(10, 15);
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(10U, r.start());
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(15U, r.end());
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(5U, r.length());
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(r.is_reversed());
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(r.is_empty());
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(r.IsValid());
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(10U, r.GetMin());
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(15U, r.GetMax());
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(RangeTest, StartEndReversedInit) {
3358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  gfx::Range r(10, 5);
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(10U, r.start());
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(5U, r.end());
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(5U, r.length());
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(r.is_reversed());
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(r.is_empty());
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(r.IsValid());
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(5U, r.GetMin());
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(10U, r.GetMax());
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(RangeTest, PositionInit) {
4558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  gfx::Range r(12);
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(12U, r.start());
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(12U, r.end());
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(0U, r.length());
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(r.is_reversed());
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(r.is_empty());
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(r.IsValid());
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(12U, r.GetMin());
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(12U, r.GetMax());
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(RangeTest, InvalidRange) {
5758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  gfx::Range r(gfx::Range::InvalidRange());
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(0U, r.length());
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(r.start(), r.end());
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(r.is_reversed());
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(r.is_empty());
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(r.IsValid());
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(RangeTest, Equality) {
6658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  gfx::Range r1(10, 4);
6758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  gfx::Range r2(10, 4);
6858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  gfx::Range r3(10, 2);
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(r1, r2);
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_NE(r1, r3);
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_NE(r2, r3);
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  gfx::Range r4(11, 4);
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_NE(r1, r4);
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_NE(r2, r4);
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_NE(r3, r4);
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  gfx::Range r5(12, 5);
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_NE(r1, r5);
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_NE(r2, r5);
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_NE(r3, r5);
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(RangeTest, EqualsIgnoringDirection) {
8558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  gfx::Range r1(10, 5);
8658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  gfx::Range r2(5, 10);
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(r1.EqualsIgnoringDirection(r2));
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(RangeTest, SetStart) {
9158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  gfx::Range r(10, 20);
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(10U, r.start());
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(10U, r.length());
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  r.set_start(42);
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(42U, r.start());
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(20U, r.end());
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(22U, r.length());
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(r.is_reversed());
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(RangeTest, SetEnd) {
10358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  gfx::Range r(10, 13);
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(10U, r.start());
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(3U, r.length());
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  r.set_end(20);
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(10U, r.start());
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(20U, r.end());
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(10U, r.length());
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(RangeTest, SetStartAndEnd) {
11458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  gfx::Range r;
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  r.set_end(5);
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  r.set_start(1);
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(1U, r.start());
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(5U, r.end());
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(4U, r.length());
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(1U, r.GetMin());
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(5U, r.GetMax());
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(RangeTest, ReversedRange) {
12558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  gfx::Range r(10, 5);
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(10U, r.start());
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(5U, r.end());
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(5U, r.length());
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(r.is_reversed());
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(r.IsValid());
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(5U, r.GetMin());
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(10U, r.GetMax());
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(RangeTest, SetReversedRange) {
13658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  gfx::Range r(10, 20);
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  r.set_start(25);
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(25U, r.start());
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(20U, r.end());
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(5U, r.length());
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(r.is_reversed());
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(r.IsValid());
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  r.set_end(21);
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(25U, r.start());
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(21U, r.end());
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(4U, r.length());
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(r.IsValid());
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(21U, r.GetMin());
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ(25U, r.GetMax());
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)void TestContainsAndIntersects(const gfx::Range& r1,
15458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)                               const gfx::Range& r2,
15558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)                               const gfx::Range& r3) {
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(r1.Intersects(r1));
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(r1.Contains(r1));
15858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  EXPECT_EQ(gfx::Range(10, 12), r1.Intersect(r1));
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(r1.Intersects(r2));
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(r1.Contains(r2));
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(r1.Intersect(r2).is_empty());
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(r2.Intersects(r1));
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(r2.Contains(r1));
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(r2.Intersect(r1).is_empty());
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(r1.Intersects(r3));
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(r3.Intersects(r1));
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(r3.Contains(r1));
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(r1.Contains(r3));
17158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  EXPECT_EQ(gfx::Range(10, 12), r1.Intersect(r3));
17258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  EXPECT_EQ(gfx::Range(10, 12), r3.Intersect(r1));
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(r2.Intersects(r3));
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(r3.Intersects(r2));
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(r3.Contains(r2));
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(r2.Contains(r3));
17858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  EXPECT_EQ(gfx::Range(5, 8), r2.Intersect(r3));
17958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  EXPECT_EQ(gfx::Range(5, 8), r3.Intersect(r2));
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(RangeTest, ContainAndIntersect) {
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  {
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    SCOPED_TRACE("contain and intersect");
18558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    gfx::Range r1(10, 12);
18658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    gfx::Range r2(1, 8);
18758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    gfx::Range r3(5, 12);
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    TestContainsAndIntersects(r1, r2, r3);
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  {
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    SCOPED_TRACE("contain and intersect: reversed");
19258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    gfx::Range r1(12, 10);
19358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    gfx::Range r2(8, 1);
19458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)    gfx::Range r3(12, 5);
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    TestContainsAndIntersects(r1, r2, r3);
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Invalid rect tests
19858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  gfx::Range r1(10, 12);
19958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  gfx::Range r2(8, 1);
20058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  gfx::Range invalid = r1.Intersect(r2);
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(invalid.IsValid());
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(invalid.Contains(invalid));
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(invalid.Contains(r1));
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(invalid.Intersects(invalid));
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(invalid.Intersects(r1));
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(r1.Contains(invalid));
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(r1.Intersects(invalid));
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
209