Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
E
eigenpy
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository 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
Stack Of Tasks
eigenpy
Commits
a75379e0
Unverified
Commit
a75379e0
authored
1 year ago
by
Joris Vaillant
Browse files
Options
Downloads
Patches
Plain Diff
variant: Test str and complex type support
parent
558e3919
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Pipeline
#36063
passed with warnings
1 year ago
Stage: test
Changes
2
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
unittest/python/test_variant.py.in
+42
-2
42 additions, 2 deletions
unittest/python/test_variant.py.in
unittest/variant.cpp.in
+17
-3
17 additions, 3 deletions
unittest/variant.cpp.in
with
59 additions
and
5 deletions
unittest/python/test_variant.py.in
+
42
−
2
View file @
a75379e0
...
@@ -6,7 +6,12 @@ V2 = variant_module.V2
...
@@ -6,7 +6,12 @@ V2 = variant_module.V2
VariantHolder = variant_module.VariantHolder
VariantHolder = variant_module.VariantHolder
VariantFullHolder = variant_module.VariantFullHolder
VariantFullHolder = variant_module.VariantFullHolder
make_variant = variant_module.make_variant
make_variant = variant_module.make_variant
make_variant_full = variant_module.make_variant_full
make_variant_full_none = variant_module.make_variant_full_none
make_variant_full_float = variant_module.make_variant_full_float
make_variant_full_int = variant_module.make_variant_full_int
make_variant_full_bool = variant_module.make_variant_full_bool
make_variant_full_str = variant_module.make_variant_full_str
make_variant_full_complex = variant_module.make_variant_full_complex
variant = make_variant()
variant = make_variant()
assert isinstance(variant, V1)
assert isinstance(variant, V1)
...
@@ -44,9 +49,34 @@ assert isinstance(variant_holder.variant, V2)
...
@@ -44,9 +49,34 @@ assert isinstance(variant_holder.variant, V2)
assert variant_holder.variant.v == v2.v
assert variant_holder.variant.v == v2.v
# Test variant that hold a None value
# Test variant that hold a None value
v_full = make_variant_full()
v_full = make_variant_full
_none
()
assert v_full is None
assert v_full is None
# Test variant that hold a float value
v_full = make_variant_full_float()
assert v_full == 3.14
assert isinstance(v_full, float)
# Test variant that hold a int value
v_full = make_variant_full_int()
assert v_full == 3
assert isinstance(v_full, int)
# Test variant that hold a bool value
v_full = make_variant_full_bool()
assert not v_full
assert isinstance(v_full, bool)
# Test variant that hold a str value
v_full = make_variant_full_str()
assert v_full == "str"
assert isinstance(v_full, str)
# Test variant that hold a complex value
v_full = make_variant_full_complex()
assert v_full == 1 + 0j
assert isinstance(v_full, complex)
variant_full_holder = VariantFullHolder()
variant_full_holder = VariantFullHolder()
# Test None
# Test None
...
@@ -81,3 +111,13 @@ assert isinstance(variant_full_holder.variant, int)
...
@@ -81,3 +111,13 @@ assert isinstance(variant_full_holder.variant, int)
variant_full_holder.variant = 3.14
variant_full_holder.variant = 3.14
assert variant_full_holder.variant == 3.14
assert variant_full_holder.variant == 3.14
assert isinstance(variant_full_holder.variant, float)
assert isinstance(variant_full_holder.variant, float)
# Test str
variant_full_holder.variant = "str"
assert variant_full_holder.variant == "str"
assert isinstance(variant_full_holder.variant, str)
# Test complex
variant_full_holder.variant = 1 + 0j
assert variant_full_holder.variant == 1 + 0j
assert isinstance(variant_full_holder.variant, complex)
This diff is collapsed.
Click to expand it.
unittest/variant.cpp.in
+
17
−
3
View file @
a75379e0
...
@@ -4,6 +4,9 @@
...
@@ -4,6 +4,9 @@
#include <eigenpy/eigenpy.hpp>
#include <eigenpy/eigenpy.hpp>
#include <eigenpy/variant.hpp>
#include <eigenpy/variant.hpp>
#include <string>
#include <complex>
#cmakedefine TEST_TYPE @TEST_TYPE@
#cmakedefine TEST_TYPE @TEST_TYPE@
#define VARIANT TEST_TYPE
#define VARIANT TEST_TYPE
...
@@ -32,12 +35,18 @@ struct MyVariantNoneHelper<std::variant<Alternatives...> > {
...
@@ -32,12 +35,18 @@ struct MyVariantNoneHelper<std::variant<Alternatives...> > {
};
};
#endif
#endif
typedef typename MyVariantNoneHelper<VARIANT<V1, bool, int, double> >::type
typedef typename MyVariantNoneHelper<
VARIANT<V1, bool, int, double, std::string, std::complex<double> > >::type
MyVariantFull;
MyVariantFull;
MyVariant make_variant() { return V1(); }
MyVariant make_variant() { return V1(); }
MyVariantFull make_variant_full() { return MyVariantFull(); }
MyVariantFull make_variant_full_none() { return MyVariantFull(); }
MyVariantFull make_variant_full_float() { return 3.14; }
MyVariantFull make_variant_full_int() { return 3; }
MyVariantFull make_variant_full_bool() { return false; }
MyVariantFull make_variant_full_str() { return std::string("str"); }
MyVariantFull make_variant_full_complex() { return std::complex<double>(1., 0.); }
struct VariantHolder {
struct VariantHolder {
MyVariant variant;
MyVariant variant;
...
@@ -68,7 +77,12 @@ BOOST_PYTHON_MODULE(@MODNAME@) {
...
@@ -68,7 +77,12 @@ BOOST_PYTHON_MODULE(@MODNAME@) {
typedef eigenpy::VariantConverter<MyVariantFull> ConverterFull;
typedef eigenpy::VariantConverter<MyVariantFull> ConverterFull;
ConverterFull::registration();
ConverterFull::registration();
bp::def("make_variant_full", make_variant_full);
bp::def("make_variant_full_none", make_variant_full_none);
bp::def("make_variant_full_float", make_variant_full_float);
bp::def("make_variant_full_int", make_variant_full_int);
bp::def("make_variant_full_bool", make_variant_full_bool);
bp::def("make_variant_full_str", make_variant_full_str);
bp::def("make_variant_full_complex", make_variant_full_complex);
boost::python::class_<VariantFullHolder>("VariantFullHolder", bp::init<>())
boost::python::class_<VariantFullHolder>("VariantFullHolder", bp::init<>())
.add_property("variant",
.add_property("variant",
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment