blob: 1d39757fd2cbc7e2cc4b7a87913625ad1c2b3d33 [file] [log] [blame]
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "src/ui/lib/escher/geometry/interval.h"
#include <lib/syslog/cpp/macros.h>
#include <gtest/gtest.h>
#include "src/ui/lib/escher/geometry/intersection.h"
#include "src/ui/lib/escher/geometry/types.h"
namespace {
using namespace escher;
TEST(Interval, Construct) {
Interval interval; // empty.
Interval interval2(30, 50);
EXPECT_TRUE(interval.is_empty());
EXPECT_EQ(interval2.min(), 30);
EXPECT_EQ(interval2.max(), 50);
}
TEST(Interval, Join) {
Interval interval_1(10, 20);
Interval interval_2(50, 60);
Interval result = interval_1.Join(interval_2);
EXPECT_TRUE(result == Interval(10, 60));
}
TEST(Interval, Intersect) {
Interval empty;
Interval first(10, 20);
Interval second(12, 19);
Interval third(30, 40);
Interval fourth(35, 45);
EXPECT_TRUE(empty.Intersect(first) == Interval());
EXPECT_TRUE(first.Intersect(empty) == Interval());
EXPECT_TRUE(first.Intersect(second) == second);
EXPECT_TRUE(second.Intersect(first) == second);
EXPECT_TRUE(first.Intersect(third) == Interval());
EXPECT_TRUE(third.Intersect(first) == Interval());
// Partially intersecting intervals.
EXPECT_TRUE(third.Intersect(fourth) == Interval(35, 40));
EXPECT_TRUE(fourth.Intersect(third) == Interval(35, 40));
}
TEST(Interval, Contains) {
Interval interval(0, 100);
Interval interval2(0, 90);
Interval interval3(50, 70);
Interval interval4(90, 110);
EXPECT_TRUE(interval.Contains(35));
EXPECT_FALSE(interval.Contains(200));
// Checks to make sure intervals are closed.
EXPECT_TRUE(interval.Contains(interval2));
EXPECT_TRUE(interval.Contains(interval3));
EXPECT_TRUE(interval2.Contains(interval3));
EXPECT_FALSE(interval.Contains(interval4));
}
} // namespace