| // Copyright 2018 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 <gtest/gtest.h> |
| |
| #include "../probe_sequence.h" |
| |
| namespace wlan { |
| namespace { |
| |
| TEST(ProbeSequenceTest, RandomSequence) { |
| auto random_sequence = ProbeSequence::RandomSequence(); |
| std::set<tx_vec_idx_t> seen{}; |
| tx_vec_idx_t count = 0; |
| ProbeSequence::Entry entry; |
| tx_vec_idx_t picked; |
| random_sequence.Next(&entry, &picked); |
| for (uint8_t i = 0; i < ProbeSequence::kNumProbeSequece; ++i) { |
| do { |
| seen.emplace(picked); |
| ++count; |
| } while (!random_sequence.Next(&entry, &picked)); |
| EXPECT_EQ(ProbeSequence::kSequenceLength, seen.size()); |
| EXPECT_EQ(ProbeSequence::kSequenceLength, count); |
| EXPECT_EQ(kStartIdx, *seen.cbegin()); |
| EXPECT_EQ(kMaxValidIdx, *(--seen.cend())); |
| seen.clear(); |
| count = 0; |
| } |
| } |
| |
| } // namespace |
| } // namespace wlan |