summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosh Blum2013-06-03 12:52:02 -0700
committerJosh Blum2013-06-03 12:52:02 -0700
commit4201e46df896d88ef39a3ccb3b57f7517932d5a2 (patch)
tree602d8d23aa1dce08d1e537fe18e8745143efc05a
parent2e5fbbc2580724684026ec2827b55df38634c996 (diff)
downloadsandhi-4201e46df896d88ef39a3ccb3b57f7517932d5a2.tar.gz
sandhi-4201e46df896d88ef39a3ccb3b57f7517932d5a2.tar.bz2
sandhi-4201e46df896d88ef39a3ccb3b57f7517932d5a2.zip
props: imply set from value presence
-rw-r--r--lib/top_block_query.cpp6
-rw-r--r--tests/query_test.py6
2 files changed, 3 insertions, 9 deletions
diff --git a/lib/top_block_query.cpp b/lib/top_block_query.cpp
index 8a9261c..c38fbd9 100644
--- a/lib/top_block_query.cpp
+++ b/lib/top_block_query.cpp
@@ -168,18 +168,18 @@ static ptree query_props(ElementImpl *self, const ptree &query)
ptree root;
const std::string block_id = query.get<std::string>("block");
const std::string prop_key = query.get<std::string>("key");
- const std::string action = query.get<std::string>("action");
+ const bool set = query.count("value") != 0;
BOOST_FOREACH(Apology::Worker *worker, self->executor->get_workers())
{
BlockActor *block = dynamic_cast<BlockActor *>(worker);
if (block->block_ptr->get_uid() != block_id) continue;
- if (action == "set")
+ if (set)
{
const std::type_info &t = block->property_registry[prop_key].setter->type();
const PMCC p = ptree_to_pmc(query.get_child("value"), t);
block->prop_access_dispatcher(prop_key, p, true);
}
- if (action == "get")
+ else
{
PMCC p = block->prop_access_dispatcher(prop_key, PMC(), false);
ptree v = pmc_to_ptree(p);
diff --git a/tests/query_test.py b/tests/query_test.py
index 8faa148..98561ff 100644
--- a/tests/query_test.py
+++ b/tests/query_test.py
@@ -88,7 +88,6 @@ class QueryTest(unittest.TestCase):
path="/props.json",
block='test_numeric_query',
key='numeric_value',
- action='set',
value=42,
))
self.assertEqual(block.numeric_value, 42)
@@ -99,7 +98,6 @@ class QueryTest(unittest.TestCase):
path="/props.json",
block='test_numeric_query',
key='numeric_value',
- action='get'
))
self.assertEqual(result['value'], 21)
@@ -108,7 +106,6 @@ class QueryTest(unittest.TestCase):
path="/props.json",
block='test_numeric_query',
key='numeric_value',
- action='set',
value='(0, 42)',
))
self.assertEqual(block.numeric_value, 42j)
@@ -119,7 +116,6 @@ class QueryTest(unittest.TestCase):
path="/props.json",
block='test_numeric_query',
key='numeric_value',
- action='get'
))
self.assertEqual(result['value'], '(0,21)')
@@ -136,7 +132,6 @@ class QueryTest(unittest.TestCase):
path="/props.json",
block='test_vector_query',
key='vector_value',
- action='set',
value=[1, 2, 3, 4, 5],
))
self.assertEqual(list(block.vector_value), [1, 2, 3, 4, 5])
@@ -147,7 +142,6 @@ class QueryTest(unittest.TestCase):
path="/props.json",
block='test_vector_query',
key='vector_value',
- action='get'
))
self.assertEqual(list(result['value']), [6, 7, 8, 9])