Add SelectedFrames::size/empty() member functions

This commit is contained in:
David Capello 2016-06-13 17:47:17 -03:00
parent 52d088ef80
commit 5e5a91444e
3 changed files with 16 additions and 0 deletions

View File

@ -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()) {

View File

@ -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);

View File

@ -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<frame_t> 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<frame_t> 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<frame_t> res;
std::copy(f.begin(), f.end(), std::back_inserter(res));