From 5e5a91444e3670ebfe70a0552321e2a2ad56df11 Mon Sep 17 00:00:00 2001 From: David Capello Date: Mon, 13 Jun 2016 17:47:17 -0300 Subject: [PATCH] Add SelectedFrames::size/empty() member functions --- src/doc/selected_frames.cpp | 8 ++++++++ src/doc/selected_frames.h | 3 +++ src/doc/selected_frames_tests.cpp | 5 +++++ 3 files changed, 16 insertions(+) diff --git a/src/doc/selected_frames.cpp b/src/doc/selected_frames.cpp index b5f6c9f80..1e7b3772f 100644 --- a/src/doc/selected_frames.cpp +++ b/src/doc/selected_frames.cpp @@ -12,6 +12,14 @@ namespace doc { +std::size_t SelectedFrames::size() const +{ + std::size_t size = 0; + for (auto& range : m_ranges) + size += (range.toFrame - range.fromFrame + 1); + return size; +} + void SelectedFrames::insert(frame_t frame) { if (m_ranges.empty()) { diff --git a/src/doc/selected_frames.h b/src/doc/selected_frames.h index cf45a8f6b..1ea54ccec 100644 --- a/src/doc/selected_frames.h +++ b/src/doc/selected_frames.h @@ -61,6 +61,9 @@ namespace doc { const_iterator begin() const { return const_iterator(m_ranges.begin()); } const_iterator end() const { return const_iterator(m_ranges.end()); } + std::size_t size() const; + bool empty() const { return m_ranges.empty(); } + void insert(frame_t frame); void insert(frame_t fromFrame, frame_t toFrame); diff --git a/src/doc/selected_frames_tests.cpp b/src/doc/selected_frames_tests.cpp index 4ffd37c91..757494b33 100644 --- a/src/doc/selected_frames_tests.cpp +++ b/src/doc/selected_frames_tests.cpp @@ -20,9 +20,12 @@ using namespace doc; TEST(SelectedFrames, BasicOneRange) { SelectedFrames f; + ASSERT_TRUE(f.empty()); f.insert(1); f.insert(2); f.insert(3); + ASSERT_FALSE(f.empty()); + ASSERT_EQ(3, f.size()); std::vector res; std::copy(f.begin(), f.end(), std::back_inserter(res)); @@ -39,6 +42,7 @@ TEST(SelectedFrames, BasicThreeRanges) f.insert(1); f.insert(3); f.insert(5); + ASSERT_EQ(3, f.size()); std::vector res; std::copy(f.begin(), f.end(), std::back_inserter(res)); @@ -55,6 +59,7 @@ TEST(SelectedFrames, InsertSelectedFrameInsideSelectedRange) f.insert(3); f.insert(5, 8); f.insert(7); + ASSERT_EQ(5, f.size()); std::vector res; std::copy(f.begin(), f.end(), std::back_inserter(res));