def main(): return composer.do( composer.retry( 2, composer.action('generateEvenNumber', {'action': generateEvenNumber})), composer.action('evenFailed', {'action': evenFailed}))
def test_valid_and_invalid_options(self): composer.action('foo', {}) try: composer.action('foo', 42) assert False except composer.ComposerError as error: assert error.message.startswith('Invalid argument')
def main(): return composer.when( composer.action( 'authenticate', {'action': lambda args: { 'value': args['password'] == 'abc123' }}), composer.action('success', {'action': lambda args: { 'message': 'success' }}), composer.action('failure', {'action': lambda args: { 'message': 'failure' }}))
def test_invalid(self): '''invalid options''' try: invoke(composer.action('foo', 42)) assert False except composer.ComposerError as error: assert error.message.startswith('Invalid argument')
def main(): composer.action( 'rands', { 'action': { 'kind': 'python:3', 'code': "from random import randint\ndef function(env, args):\n return { 'value' : randint(0,100) }" } }) composer.action( 'prob', { 'action': { 'kind': 'python:3', 'code': "def function(env, args):\n return { 'prob' : args['value'] > 70 }" } }) composer.action( 'ifTrue', { 'action': { 'kind': 'python:3', 'code': "def function(env, args):\n return { 'messge' : 'your random was greater than 70' }" } }) composer.action( 'ifFalse', { 'action': { 'kind': 'python:3', 'code': "def function(env, args):\n return { 'messge' : 'your random was less than 70' }" } }) composer.action('randProb', {'sequence': ['rands', 'prob']}) return composer.when('randProb', 'ifTrue', 'ifFalse')
def test_action_false(self): ''' action must return false ''' activation = invoke(composer.action('isNotOne'), {'n': 1}) assert activation['response']['result'] == {'value': False}
def test_action_true(self): ''' action must return true ''' activation = invoke(composer.action('isNotOne'), {'n': 0}) assert activation['response']['result'] == {'value': True}
def test_valid_and_invalid_names(self): combos = [{ "n": 42, "s": False, "e": "Name must be a string" }, { "n": "", "s": False, "e": "Name is not valid" }, { "n": " ", "s": False, "e": "Name is not valid" }, { "n": "/", "s": False, "e": "Name is not valid" }, { "n": "//", "s": False, "e": "Name is not valid" }, { "n": "/a", "s": False, "e": "Name is not valid" }, { "n": "/a/b/c/d", "s": False, "e": "Name is not valid" }, { "n": "/a/b/c/d/", "s": False, "e": "Name is not valid" }, { "n": "a/b/c/d", "s": False, "e": "Name is not valid" }, { "n": "/a/ /b", "s": False, "e": "Name is not valid" }, { "n": "a", "e": False, "s": "/_/a" }, { "n": "a/b", "e": False, "s": "/_/a/b" }, { "n": "a/b/c", "e": False, "s": "/a/b/c" }, { "n": "/a/b", "e": False, "s": "/a/b" }, { "n": "/a/b/c", "e": False, "s": "/a/b/c" }] for combo in combos: if combo["s"] is not False: # good cases assert composer.action(combo["n"]).name == combo["s"] else: # error cases try: composer.action(combo["n"]) assert False except composer.ComposerError as error: assert error.message.startswith(combo["e"])
def test_combinator_type(self): assert getattr(composer.action('foo'), 'type') == 'action'
def main(): return composer.when( composer.action('authenticate', {'action': authenticate}), composer.action('success', {'action': success}), composer.action('failure', {'action': failure}))