1*3f982cf4SFabien Sanglard // Copyright 2019 The Chromium Authors. All rights reserved.
2*3f982cf4SFabien Sanglard // Use of this source code is governed by a BSD-style license that can be
3*3f982cf4SFabien Sanglard // found in the LICENSE file.
4*3f982cf4SFabien Sanglard
5*3f982cf4SFabien Sanglard #include "cast/streaming/ssrc.h"
6*3f982cf4SFabien Sanglard
7*3f982cf4SFabien Sanglard #include <vector>
8*3f982cf4SFabien Sanglard
9*3f982cf4SFabien Sanglard #include "gtest/gtest.h"
10*3f982cf4SFabien Sanglard #include "util/std_util.h"
11*3f982cf4SFabien Sanglard
12*3f982cf4SFabien Sanglard namespace openscreen {
13*3f982cf4SFabien Sanglard namespace cast {
14*3f982cf4SFabien Sanglard namespace {
15*3f982cf4SFabien Sanglard
TEST(SsrcTest,GeneratesUniqueAndPrioritizedSsrcs)16*3f982cf4SFabien Sanglard TEST(SsrcTest, GeneratesUniqueAndPrioritizedSsrcs) {
17*3f982cf4SFabien Sanglard std::vector<Ssrc> priority_ssrcs;
18*3f982cf4SFabien Sanglard for (int i = 0; i < 3; ++i) {
19*3f982cf4SFabien Sanglard priority_ssrcs.push_back(GenerateSsrc(true));
20*3f982cf4SFabien Sanglard }
21*3f982cf4SFabien Sanglard
22*3f982cf4SFabien Sanglard // Three different higher-priority SSRCs should have been generated.
23*3f982cf4SFabien Sanglard SortAndDedupeElements(&priority_ssrcs);
24*3f982cf4SFabien Sanglard EXPECT_EQ(3u, priority_ssrcs.size());
25*3f982cf4SFabien Sanglard
26*3f982cf4SFabien Sanglard std::vector<Ssrc> normal_ssrcs;
27*3f982cf4SFabien Sanglard for (int i = 0; i < 3; ++i) {
28*3f982cf4SFabien Sanglard normal_ssrcs.push_back(GenerateSsrc(false));
29*3f982cf4SFabien Sanglard }
30*3f982cf4SFabien Sanglard
31*3f982cf4SFabien Sanglard // Three different normal SSRCs should have been generated.
32*3f982cf4SFabien Sanglard SortAndDedupeElements(&normal_ssrcs);
33*3f982cf4SFabien Sanglard EXPECT_EQ(3u, normal_ssrcs.size());
34*3f982cf4SFabien Sanglard
35*3f982cf4SFabien Sanglard // All six SSRCs, together, should be unique.
36*3f982cf4SFabien Sanglard std::vector<Ssrc> all_ssrcs;
37*3f982cf4SFabien Sanglard all_ssrcs.insert(all_ssrcs.end(), priority_ssrcs.begin(),
38*3f982cf4SFabien Sanglard priority_ssrcs.end());
39*3f982cf4SFabien Sanglard all_ssrcs.insert(all_ssrcs.end(), normal_ssrcs.begin(), normal_ssrcs.end());
40*3f982cf4SFabien Sanglard SortAndDedupeElements(&all_ssrcs);
41*3f982cf4SFabien Sanglard EXPECT_EQ(6u, all_ssrcs.size());
42*3f982cf4SFabien Sanglard
43*3f982cf4SFabien Sanglard // ComparePriority() should return values indicating the appropriate
44*3f982cf4SFabien Sanglard // prioritization.
45*3f982cf4SFabien Sanglard for (int i = 0; i < 3; ++i) {
46*3f982cf4SFabien Sanglard for (int j = 0; j < 3; ++j) {
47*3f982cf4SFabien Sanglard EXPECT_LT(ComparePriority(priority_ssrcs[i], normal_ssrcs[j]), 0);
48*3f982cf4SFabien Sanglard EXPECT_GT(ComparePriority(normal_ssrcs[i], priority_ssrcs[j]), 0);
49*3f982cf4SFabien Sanglard }
50*3f982cf4SFabien Sanglard }
51*3f982cf4SFabien Sanglard }
52*3f982cf4SFabien Sanglard
53*3f982cf4SFabien Sanglard } // namespace
54*3f982cf4SFabien Sanglard } // namespace cast
55*3f982cf4SFabien Sanglard } // namespace openscreen
56