IAP GITLAB
Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
corsika
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Issue analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Air Shower Physics
corsika
Compare revisions
master to 586-wrong-indexing-of-switchprocesssequence
Compare revisions
Changes are shown as if the
source
revision was being merged into the
target
revision.
Learn more about comparing revisions.
Source
AirShowerPhysics/corsika
Select target project
No results found
586-wrong-indexing-of-switchprocesssequence
Select Git revision
Swap
Target
AirShowerPhysics/corsika
Select target project
AirShowerPhysics/corsika
rulrich/corsika
AAAlvesJr/corsika
Andre/corsika
arrabito/corsika
Nikos/corsika
olheiser73/corsika
AirShowerPhysics/papers/corsika
pranav/corsika
9 results
master
Select Git revision
Show changes
Only incoming changes from source
Include changes to target since source was created
Compare
Commits on Source (3)
Add failing test for indexing with SwitchProcessSequence+
· e721d28b
Jean-Marco Alameddine
authored
1 year ago
e721d28b
add additional check for NumberOfProcesses
· 8926fa5a
Jean-Marco Alameddine
authored
1 year ago
8926fa5a
Add nested make_sequence test
· 4aa7f5d1
Jean-Marco Alameddine
authored
1 year ago
4aa7f5d1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
tests/framework/testProcessSequence.cpp
+181
-0
181 additions, 0 deletions
tests/framework/testProcessSequence.cpp
with
181 additions
and
0 deletions
tests/framework/testProcessSequence.cpp
View file @
4aa7f5d1
...
...
@@ -1065,3 +1065,184 @@ TEST_CASE("ProcessSequence Indexing", "ProcessSequence") {
<<
std
::
endl
;
}
}
TEST_CASE
(
"SwitchProcessSequence Indexing"
,
"ProcessSequence"
)
{
// see issue https://gitlab.iap.kit.edu/AirShowerPhysics/corsika/-/issues/573
// and issue https://gitlab.iap.kit.edu/AirShowerPhysics/corsika/-/issues/586
logging
::
set_level
(
logging
::
level
::
info
);
CoordinateSystemPtr
rootCS
=
get_root_CoordinateSystem
();
struct
SwitchSelect
{
bool
operator
()(
DummyData
const
&
p
)
const
{
return
(
p
.
data_
[
0
]
>
0
);
}
};
SwitchSelect
select1
;
auto
cp1
=
ContinuousProcess1
(
0
,
0
_m
);
auto
cp2
=
ContinuousProcess1
(
0
,
0
_m
);
auto
cp3
=
ContinuousProcess1
(
0
,
0
_m
);
auto
cp4
=
ContinuousProcess1
(
0
,
0
_m
);
auto
switch_sequence
=
make_select
(
select1
,
cp1
,
cp2
);
auto
sequence
=
make_sequence
(
switch_sequence
,
cp3
,
cp4
);
CHECK
(
sequence
.
getNumberOfProcesses
()
==
4
);
CHECK
(
switch_sequence
.
getNumberOfProcesses
()
==
2
);
DummyData
particle
;
DummyTrajectory
track
;
DummyView
view
(
particle
);
Step
step
(
particle
,
track
);
// cp1 selected
cp1
.
setStep
(
1
_m
);
cp2
.
setStep
(
100
_m
);
cp3
.
setStep
(
100
_m
);
cp4
.
setStep
(
100
_m
);
particle
.
data_
[
0
]
=
1
;
// positive so that cp1 is selected
CHECK_FALSE
(
cp1
.
getFlag
());
CHECK_FALSE
(
cp2
.
getFlag
());
CHECK_FALSE
(
cp3
.
getFlag
());
CHECK_FALSE
(
cp4
.
getFlag
());
ContinuousProcessStepLength
continuousMaxStep
=
sequence
.
getMaxStepLength
(
particle
,
track
);
sequence
.
doContinuous
(
step
,
continuousMaxStep
.
getIndex
());
CHECK
(
cp1
.
getFlag
());
CHECK_FALSE
(
cp2
.
getFlag
());
CHECK_FALSE
(
cp3
.
getFlag
());
CHECK_FALSE
(
cp4
.
getFlag
());
cp1
.
resetFlag
();
cp2
.
resetFlag
();
cp3
.
resetFlag
();
cp4
.
resetFlag
();
// cp2 selected
cp1
.
setStep
(
100
_m
);
cp2
.
setStep
(
1
_m
);
cp3
.
setStep
(
100
_m
);
cp4
.
setStep
(
100
_m
);
particle
.
data_
[
0
]
=
-
1
;
// negative so that cp2 is selected
CHECK_FALSE
(
cp1
.
getFlag
());
CHECK_FALSE
(
cp2
.
getFlag
());
CHECK_FALSE
(
cp3
.
getFlag
());
CHECK_FALSE
(
cp4
.
getFlag
());
continuousMaxStep
=
sequence
.
getMaxStepLength
(
particle
,
track
);
sequence
.
doContinuous
(
step
,
continuousMaxStep
.
getIndex
());
CHECK_FALSE
(
cp1
.
getFlag
());
CHECK
(
cp2
.
getFlag
());
CHECK_FALSE
(
cp3
.
getFlag
());
CHECK_FALSE
(
cp4
.
getFlag
());
cp1
.
resetFlag
();
cp2
.
resetFlag
();
cp3
.
resetFlag
();
cp4
.
resetFlag
();
// cp3 selected
cp1
.
setStep
(
100
_m
);
cp2
.
setStep
(
100
_m
);
cp3
.
setStep
(
1
_m
);
cp4
.
setStep
(
100
_m
);
CHECK_FALSE
(
cp1
.
getFlag
());
CHECK_FALSE
(
cp2
.
getFlag
());
CHECK_FALSE
(
cp3
.
getFlag
());
CHECK_FALSE
(
cp4
.
getFlag
());
continuousMaxStep
=
sequence
.
getMaxStepLength
(
particle
,
track
);
sequence
.
doContinuous
(
step
,
continuousMaxStep
.
getIndex
());
CHECK_FALSE
(
cp1
.
getFlag
());
CHECK_FALSE
(
cp2
.
getFlag
());
CHECK
(
cp3
.
getFlag
());
CHECK_FALSE
(
cp4
.
getFlag
());
cp1
.
resetFlag
();
cp2
.
resetFlag
();
cp3
.
resetFlag
();
cp4
.
resetFlag
();
// cp4 selected
cp1
.
setStep
(
100
_m
);
cp2
.
setStep
(
100
_m
);
cp3
.
setStep
(
100
_m
);
cp4
.
setStep
(
1
_m
);
CHECK_FALSE
(
cp1
.
getFlag
());
CHECK_FALSE
(
cp2
.
getFlag
());
CHECK_FALSE
(
cp3
.
getFlag
());
CHECK_FALSE
(
cp4
.
getFlag
());
continuousMaxStep
=
sequence
.
getMaxStepLength
(
particle
,
track
);
sequence
.
doContinuous
(
step
,
continuousMaxStep
.
getIndex
());
CHECK_FALSE
(
cp1
.
getFlag
());
CHECK_FALSE
(
cp2
.
getFlag
());
CHECK_FALSE
(
cp3
.
getFlag
());
CHECK
(
cp4
.
getFlag
());
cp1
.
resetFlag
();
cp2
.
resetFlag
();
cp3
.
resetFlag
();
cp4
.
resetFlag
();
}
TEST_CASE
(
"Nested ProcessSequence"
,
"ProcessSequence"
)
{
//
logging
::
set_level
(
logging
::
level
::
info
);
CoordinateSystemPtr
rootCS
=
get_root_CoordinateSystem
();
auto
cp1
=
ContinuousProcess1
(
0
,
0
_m
);
auto
cp2
=
ContinuousProcess1
(
0
,
0
_m
);
auto
cp3
=
ContinuousProcess1
(
0
,
0
_m
);
auto
sequence
=
make_sequence
(
make_sequence
(
cp1
,
cp2
),
cp3
);
CHECK
(
sequence
.
getNumberOfProcesses
()
==
3
);
DummyData
particle
;
DummyTrajectory
track
;
DummyView
view
(
particle
);
Step
step
(
particle
,
track
);
// cp1 selected
cp1
.
setStep
(
1
_m
);
cp2
.
setStep
(
100
_m
);
cp3
.
setStep
(
100
_m
);
CHECK_FALSE
(
cp1
.
getFlag
());
CHECK_FALSE
(
cp2
.
getFlag
());
CHECK_FALSE
(
cp3
.
getFlag
());
ContinuousProcessStepLength
continuousMaxStep
=
sequence
.
getMaxStepLength
(
particle
,
track
);
sequence
.
doContinuous
(
step
,
continuousMaxStep
.
getIndex
());
CHECK
(
cp1
.
getFlag
());
CHECK_FALSE
(
cp2
.
getFlag
());
CHECK_FALSE
(
cp3
.
getFlag
());
cp1
.
resetFlag
();
cp2
.
resetFlag
();
cp3
.
resetFlag
();
// cp2 selected
cp1
.
setStep
(
100
_m
);
cp2
.
setStep
(
1
_m
);
cp3
.
setStep
(
100
_m
);
CHECK_FALSE
(
cp1
.
getFlag
());
CHECK_FALSE
(
cp2
.
getFlag
());
CHECK_FALSE
(
cp3
.
getFlag
());
continuousMaxStep
=
sequence
.
getMaxStepLength
(
particle
,
track
);
sequence
.
doContinuous
(
step
,
continuousMaxStep
.
getIndex
());
CHECK_FALSE
(
cp1
.
getFlag
());
CHECK
(
cp2
.
getFlag
());
CHECK_FALSE
(
cp3
.
getFlag
());
cp1
.
resetFlag
();
cp2
.
resetFlag
();
cp3
.
resetFlag
();
// cp3 selected
cp1
.
setStep
(
100
_m
);
cp2
.
setStep
(
100
_m
);
cp3
.
setStep
(
1
_m
);
CHECK_FALSE
(
cp1
.
getFlag
());
CHECK_FALSE
(
cp2
.
getFlag
());
CHECK_FALSE
(
cp3
.
getFlag
());
continuousMaxStep
=
sequence
.
getMaxStepLength
(
particle
,
track
);
sequence
.
doContinuous
(
step
,
continuousMaxStep
.
getIndex
());
CHECK_FALSE
(
cp1
.
getFlag
());
CHECK_FALSE
(
cp2
.
getFlag
());
CHECK
(
cp3
.
getFlag
());
}
This diff is collapsed.
Click to expand it.