ATLAS Offline Software
Loading...
Searching...
No Matches
make_jetstreamTest.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
5#include "gtest/gtest.h"
7#include <vector>
8#include <memory>
9
10using vec = std::vector<std::size_t>;
11
12TEST(make_jetstreamTester, SimpleSimpleSimpleChain) {
13
14 std::vector<std::vector<std::size_t>> v;
15 v.push_back(std::vector<std::size_t>{1,2});
16 v.push_back(std::vector<std::size_t>{3,4, 5});
17 v.push_back(std::vector<std::size_t>{6,7});
18
19 std::vector<std::size_t> repeats{1,1,1};
20
21 std::size_t sid{0};
22
23 auto stream = make_jetstream(v, repeats, sid);
24
25 JetStreamer streamer(std::move(stream));
26
27 vec v0{1, 3, 6};
28 vec v1{2, 3, 6};
29 vec v2{1, 4, 6};
30 vec v3{2, 4, 6};
31 vec v4{1, 5, 6};
32 vec v5{2, 5, 6};
33 vec v6{1, 3, 7};
34 vec v7{2, 3, 7};
35 vec v8{1, 4, 7};
36 vec v9{2, 4, 7};
37 vec v10{1, 5, 7};
38 vec v11{2, 5, 7};
39
40
41 EXPECT_EQ (v0, streamer.next());
42 EXPECT_EQ (v1, streamer.next());
43 EXPECT_EQ (v2, streamer.next());
44 EXPECT_EQ (v3, streamer.next());
45 EXPECT_EQ (v4, streamer.next());
46 EXPECT_EQ (v5, streamer.next());
47 EXPECT_EQ (v6, streamer.next());
48 EXPECT_EQ (v7, streamer.next());
49 EXPECT_EQ (v8, streamer.next());
50 EXPECT_EQ (v9, streamer.next());
51 EXPECT_EQ (v10, streamer.next());
52 EXPECT_EQ (v11, streamer.next());
53
54 EXPECT_EQ (vec{}, streamer.next());
55}
56
57
58TEST(make_jetstreamTester, SimpleCompoundSimpleChain) {
59 std::vector<std::vector<std::size_t>> v;
60 v.push_back(std::vector<std::size_t>{1,2});
61 v.push_back(std::vector<std::size_t>{3,4, 5});
62 v.push_back(std::vector<std::size_t>{6,7});
63
64 std::vector<std::size_t> repeats{1,2,1};
65
66 std::size_t sid{0};
67
68 auto stream = make_jetstream(v, repeats, sid);
69
70 JetStreamer streamer(std::move(stream));
71
72 vec v0{1, 3, 4, 6};
73 vec v1{2, 3, 4, 6};
74 vec v2{1, 3, 5, 6};
75 vec v3{2, 3, 5, 6};
76 vec v4{1, 4, 5, 6};
77 vec v5{2, 4, 5, 6};
78 vec v6{1, 3, 4, 7};
79 vec v7{2, 3, 4, 7};
80 vec v8{1, 3, 5, 7};
81 vec v9{2, 3, 5, 7};
82 vec v10{1, 4, 5, 7};
83 vec v11{2, 4, 5, 7};
84
85 EXPECT_EQ (v0, streamer.next());
86 EXPECT_EQ (v1, streamer.next());
87 EXPECT_EQ (v2, streamer.next());
88 EXPECT_EQ (v3, streamer.next());
89 EXPECT_EQ (v4, streamer.next());
90 EXPECT_EQ (v5, streamer.next());
91 EXPECT_EQ (v6, streamer.next());
92 EXPECT_EQ (v7, streamer.next());
93 EXPECT_EQ (v8, streamer.next());
94 EXPECT_EQ (v9, streamer.next());
95 EXPECT_EQ (v10, streamer.next());
96 EXPECT_EQ (v11, streamer.next());
97
98 EXPECT_EQ (vec{}, streamer.next());
99}
100
101TEST(make_jetstreamTester, reallife) {
102 std::vector<std::vector<std::size_t>> v;
103 v.push_back(std::vector<std::size_t>{0, 1, 2});
104 v.push_back(std::vector<std::size_t>{
105 0, 1, 2, 3, 4, 6, 7, 9, 10, 11, 12, 13,
106 14, 15, 17, 19, 21, 25, 26, 29, 33});
107
108
109
110 std::vector<std::size_t> repeats{1,3};
111
112 std::size_t sid{0};
113
114 auto stream = make_jetstream(v, repeats, sid);
115
116 JetStreamer streamer(std::move(stream));
117
118 std::size_t ipass{0};
119
120 while (true) {
121 auto indices = streamer.next();
122 if (indices.empty()){break;}
123 ++ipass;
124 }
125
126 // 3990 = 3*C(21,3)
127 EXPECT_EQ (ipass, 3990u);
128}
std::vector< size_t > vec
std::vector< std::size_t > next()
Definition JetStreamer.h:40
TEST(make_jetstreamTester, SimpleSimpleSimpleChain)
std::unique_ptr< IJetStream > make_jetstream(std::vector< std::vector< std::size_t > > indices, std::vector< std::size_t > repeats, std::size_t sid)