// 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/media/audio/audio_core/versioned_timeline_function.h"

#include <gtest/gtest.h>

namespace media::audio {
namespace {

TEST(VersionedTimelineFunctionTest, UpdateIncrementsGeneration) {
  TimelineFunction function1 = TimelineFunction(1, 1, 1, 1);
  TimelineFunction function2 = TimelineFunction(1, 2, 1, 1);
  VersionedTimelineFunction under_test(function1);

  auto [_, initial_generation] = under_test.get();

  // Update with the same function, should not increment generation.
  under_test.Update(function1);
  {
    auto [_, gen] = under_test.get();
    EXPECT_EQ(gen, initial_generation);
  }

  // Update function, increment generation.
  under_test.Update(function2);
  {
    auto [_, gen] = under_test.get();
    EXPECT_GT(gen, initial_generation);
  }
}

}  // namespace
}  // namespace media::audio
