Esempio n. 1
0
    def test_make_choice__anycase_accepted_case_sensitity(self):
        # -- NOTE: strict=False => Disable errors due to case-mismatch.
        parse_choice = TypeBuilder.make_choice(["one", "two", "three"],
                                               strict=False)
        schema = "Answer: {answer:NumberWordChoice}"
        parser = parse.Parser(schema, dict(NumberWordChoice=parse_choice))

        # -- PERFORM TESTS:
        # NOTE: Parser uses re.IGNORECASE flag => Any case accepted.
        self.assert_match(parser, "Answer: one",   "answer", "one")
        self.assert_match(parser, "Answer: TWO",   "answer", "TWO")
        self.assert_match(parser, "Answer: Three", "answer", "Three")
Esempio n. 2
0
    def test_make_choice__anycase_accepted_case_sensitity(self):
        # -- NOTE: strict=False => Disable errors due to case-mismatch.
        parse_choice = TypeBuilder.make_choice(["one", "two", "three"],
                                               strict=False)
        schema = "Answer: {answer:NumberWordChoice}"
        parser = parse.Parser(schema, dict(NumberWordChoice=parse_choice))

        # -- PERFORM TESTS:
        # NOTE: Parser uses re.IGNORECASE flag => Any case accepted.
        self.assert_match(parser, "Answer: one", "answer", "one")
        self.assert_match(parser, "Answer: TWO", "answer", "TWO")
        self.assert_match(parser, "Answer: Three", "answer", "Three")
Esempio n. 3
0
    def test_make_choice__anycase_accepted_lowercase_enforced(self):
        # -- NOTE: strict=True => Enable errors due to case-mismatch.
        parse_choice = TypeBuilder.make_choice(["one", "two", "three"],
                            transform=lambda x: x.lower(), strict=True)
        schema = "Answer: {answer:NumberWordChoice}"
        parser = parse.Parser(schema, dict(NumberWordChoice=parse_choice))

        # -- PERFORM TESTS:
        # NOTE: Parser uses re.IGNORECASE flag
        # => Any case accepted, but result is in lower case.
        self.assert_match(parser, "Answer: one",   "answer", "one")
        self.assert_match(parser, "Answer: TWO",   "answer", "two")
        self.assert_match(parser, "Answer: Three", "answer", "three")
Esempio n. 4
0
    def test_make_choice__anycase_accepted_lowercase_enforced(self):
        # -- NOTE: strict=True => Enable errors due to case-mismatch.
        parse_choice = TypeBuilder.make_choice(["one", "two", "three"],
                                               transform=lambda x: x.lower(),
                                               strict=True)
        schema = "Answer: {answer:NumberWordChoice}"
        parser = parse.Parser(schema, dict(NumberWordChoice=parse_choice))

        # -- PERFORM TESTS:
        # NOTE: Parser uses re.IGNORECASE flag
        # => Any case accepted, but result is in lower case.
        self.assert_match(parser, "Answer: one", "answer", "one")
        self.assert_match(parser, "Answer: TWO", "answer", "two")
        self.assert_match(parser, "Answer: Three", "answer", "three")
Esempio n. 5
0
    def test_make_choice(self):
        parse_choice = TypeBuilder.make_choice(["one", "two", "three"])
        parse_choice.name = "NumberWordChoice"
        extra_types = self.build_type_dict([ parse_choice ])
        schema = "Answer: {answer:NumberWordChoice}"
        parser = parse.Parser(schema, extra_types)

        # -- PERFORM TESTS:
        self.assert_match(parser, "Answer: one", "answer", "one")
        self.assert_match(parser, "Answer: two", "answer", "two")
        self.ensure_can_parse_all_choices(parser,
                    parse_choice, "Answer: %s", "answer")

        # -- PARSE MISMATCH:
        self.assert_mismatch(parser, "Answer: __one__", "answer")
        self.assert_mismatch(parser, "Answer: one ",    "answer")
        self.assert_mismatch(parser, "Answer: one ZZZ", "answer")
Esempio n. 6
0
    def test_make_choice(self):
        parse_choice = TypeBuilder.make_choice(["one", "two", "three"])
        parse_choice.name = "NumberWordChoice"
        extra_types = build_type_dict([parse_choice])
        schema = "Answer: {answer:NumberWordChoice}"
        parser = parse.Parser(schema, extra_types)

        # -- PERFORM TESTS:
        self.assert_match(parser, "Answer: one", "answer", "one")
        self.assert_match(parser, "Answer: two", "answer", "two")
        self.ensure_can_parse_all_choices(parser, parse_choice, "Answer: %s",
                                          "answer")

        # -- PARSE MISMATCH:
        self.assert_mismatch(parser, "Answer: __one__", "answer")
        self.assert_mismatch(parser, "Answer: one ", "answer")
        self.assert_mismatch(parser, "Answer: one ZZZ", "answer")
        def test_cardinality_field_with_zero_or_one(self):
            # -- SETUP:
            parse_person = TypeBuilder.make_choice(["Alice", "Bob", "Charly"])
            parse_person.name = "Person"      # For testing only.
            extra_types = build_type_dict([ parse_person ])
            schema = "Optional: {person:Person?}"
            parser = parse.Parser(schema, extra_types)

            # -- PERFORM TESTS:
            self.assert_match(parser, "Optional: ",      "person", None)
            self.assert_match(parser, "Optional: Alice", "person", "Alice")
            self.assert_match(parser, "Optional: Bob",   "person", "Bob")

            # -- PARSE MISMATCH:
            self.assert_mismatch(parser, "Optional: Anna", "person")  # Similar1.
            self.assert_mismatch(parser, "Optional: Boby", "person")  # Similar2.
            self.assert_mismatch(parser, "Optional: a",    "person")  # INVALID ...
Esempio n. 8
0
    def test_make_choice__with_transform(self):
        transform = lambda x: x.upper()
        parse_choice = TypeBuilder.make_choice(["ONE", "two", "Three"],
                                               transform)
        self.assertSequenceEqual(parse_choice.choices, ["ONE", "TWO", "THREE"])
        schema = "Answer: {answer:NumberWordChoice}"
        parser = parse.Parser(schema, dict(NumberWordChoice=parse_choice))

        # -- PERFORM TESTS:
        self.assert_match(parser, "Answer: one", "answer", "ONE")
        self.assert_match(parser, "Answer: two", "answer", "TWO")
        self.ensure_can_parse_all_choices(parser,
                    parse_choice, "Answer: %s", "answer")

        # -- PARSE MISMATCH:
        self.assert_mismatch(parser, "Answer: __one__", "answer")
        self.assert_mismatch(parser, "Answer: one ",    "answer")
        self.assert_mismatch(parser, "Answer: one ZZZ", "answer")
Esempio n. 9
0
    def test_make_choice__with_transform(self):
        transform = lambda x: x.upper()
        parse_choice = TypeBuilder.make_choice(["ONE", "two", "Three"],
                                               transform)
        self.assertSequenceEqual(parse_choice.choices, ["ONE", "TWO", "THREE"])
        schema = "Answer: {answer:NumberWordChoice}"
        parser = parse.Parser(schema, dict(NumberWordChoice=parse_choice))

        # -- PERFORM TESTS:
        self.assert_match(parser, "Answer: one", "answer", "ONE")
        self.assert_match(parser, "Answer: two", "answer", "TWO")
        self.ensure_can_parse_all_choices(parser, parse_choice, "Answer: %s",
                                          "answer")

        # -- PARSE MISMATCH:
        self.assert_mismatch(parser, "Answer: __one__", "answer")
        self.assert_mismatch(parser, "Answer: one ", "answer")
        self.assert_mismatch(parser, "Answer: one ZZZ", "answer")
Esempio n. 10
0
        def test_without_cardinality_field(self):
            # -- IMPLCIT CARDINALITY: one
            # -- SETUP:
            parse_person = TypeBuilder.make_choice(["Alice", "Bob", "Charly"])
            parse_person.name = "Person"  # For testing only.
            extra_types = build_type_dict([parse_person])
            schema = "One: {person:Person}"
            parser = parse.Parser(schema, extra_types)

            # -- PERFORM TESTS:
            self.assert_match(parser, "One: Alice", "person", "Alice")
            self.assert_match(parser, "One: Bob", "person", "Bob")

            # -- PARSE MISMATCH:
            self.assert_mismatch(parser, "One: ", "person")  # Missing.
            self.assert_mismatch(parser, "One: BAlice", "person")  # Similar1.
            self.assert_mismatch(parser, "One: Boby", "person")  # Similar2.
            self.assert_mismatch(parser, "One: a", "person")  # INVALID ...
        def test_without_cardinality_field(self):
            # -- IMPLCIT CARDINALITY: one
            # -- SETUP:
            parse_person = TypeBuilder.make_choice(["Alice", "Bob", "Charly"])
            parse_person.name = "Person"      # For testing only.
            extra_types = build_type_dict([ parse_person ])
            schema = "One: {person:Person}"
            parser = parse.Parser(schema, extra_types)

            # -- PERFORM TESTS:
            self.assert_match(parser, "One: Alice", "person", "Alice")
            self.assert_match(parser, "One: Bob",   "person", "Bob")

            # -- PARSE MISMATCH:
            self.assert_mismatch(parser, "One: ", "person")        # Missing.
            self.assert_mismatch(parser, "One: BAlice", "person")  # Similar1.
            self.assert_mismatch(parser, "One: Boby", "person")    # Similar2.
            self.assert_mismatch(parser, "One: a",    "person")    # INVALID ...
Esempio n. 12
0
    def test_make_choice__samecase_match_or_error(self):
        # -- NOTE: strict=True => Enable errors due to case-mismatch.
        parse_choice = TypeBuilder.make_choice(["One", "TWO", "three"],
                                               strict=True)
        schema = "Answer: {answer:NumberWordChoice}"
        parser = parse.Parser(schema, dict(NumberWordChoice=parse_choice))

        # -- PERFORM TESTS: Case matches.
        # NOTE: Parser uses re.IGNORECASE flag => Any case accepted.
        self.assert_match(parser, "Answer: One",   "answer", "One")
        self.assert_match(parser, "Answer: TWO",   "answer", "TWO")
        self.assert_match(parser, "Answer: three", "answer", "three")

        # -- PERFORM TESTS: EXACT-CASE MISMATCH
        case_mismatch_input_data = ["one", "ONE", "Two", "two", "Three" ]
        for input_value in case_mismatch_input_data:
            input_text = "Answer: %s" % input_value
            with self.assertRaises(ValueError):
                parser.parse(input_text)
Esempio n. 13
0
class step_definitons:
    def __init__(self):
        pass

    @Given('I go to the meeting')
    def given_step_impl(context):
        print('>>>>>> In given step implementation')

    # parsing with split and making as list
    def parse_list(parameters):
        param_list = parameters.split(",")
        # param_list = TypeBuilder.with_one_or_more(parameters, listsep=",")
        return param_list

    register_type(List=parse_list)

    @When('I meet {persons:List}')
    def step_impl(context, persons):
        print(">>>>> Step Implementation of list of parameters")
        for person in persons:
            print("Met with people: ", person)

    @When(u'I want to meet {a+}{names}')
    def step_impl(context, names):
        print(">>>>> Implementing cardinality.")
        print(type(names))
        for name in names:
            print('want to meet ppl: ', name)

# getting list using make choice predefined

    parse_list = TypeBuilder.make_choice(["Alice", "Bob", "Charly", "Dodo"])
    # register_type(mylist=parse_list)
    list_input = TypeBuilder.with_one_or_more(parse_list, listsep=",")
    register_type(list_names=list_input)

    @When('I test cardinality with {names:list_names}')
    def step_impl(context, names):
        print(
            ">>>>> Step Implementation of list of parameters with TypeBuilder")
        print(type(names))
        for name in names:
            print(">>>>>> Names in list: ", name)
    def test_with_one_or_more_choice(self):
        parse_color  = TypeBuilder.make_choice(["red", "green", "blue"])
        parse_colors = TypeBuilder.with_one_or_more(parse_color)
        parse_colors.name = "Colors"

        extra_types = build_type_dict([ parse_colors ])
        schema = "List: {colors:Colors}"
        parser = parse.Parser(schema, extra_types)

        # -- PERFORM TESTS:
        self.assert_match(parser, "List: green",      "colors", [ "green" ])
        self.assert_match(parser, "List: red, green", "colors", [ "red", "green" ])

        # -- PARSE MISMATCH:
        self.assert_mismatch(parser, "List: ",   "colors")  # Zero items.
        self.assert_mismatch(parser, "List: x",  "colors")  # Not a Color.
        self.assert_mismatch(parser, "List: black", "colors")  # Unknown
        self.assert_mismatch(parser, "List: red,",  "colors")  # Trailing sep.
        self.assert_mismatch(parser, "List: a, b",  "colors")  # List of ...
Esempio n. 15
0
    def test_make_choice__samecase_match_or_error(self):
        # -- NOTE: strict=True => Enable errors due to case-mismatch.
        parse_choice = TypeBuilder.make_choice(["One", "TWO", "three"],
                                               strict=True)
        schema = "Answer: {answer:NumberWordChoice}"
        parser = parse.Parser(schema, dict(NumberWordChoice=parse_choice))

        # -- PERFORM TESTS: Case matches.
        # NOTE: Parser uses re.IGNORECASE flag => Any case accepted.
        self.assert_match(parser, "Answer: One", "answer", "One")
        self.assert_match(parser, "Answer: TWO", "answer", "TWO")
        self.assert_match(parser, "Answer: three", "answer", "three")

        # -- PERFORM TESTS: EXACT-CASE MISMATCH
        case_mismatch_input_data = ["one", "ONE", "Two", "two", "Three"]
        for input_value in case_mismatch_input_data:
            input_text = "Answer: %s" % input_value
            with self.assertRaises(ValueError):
                parser.parse(input_text)
Esempio n. 16
0
        def test_cardinality_field_with_zero_or_one(self):
            # -- SETUP:
            parse_person = TypeBuilder.make_choice(["Alice", "Bob", "Charly"])
            parse_person.name = "Person"  # For testing only.
            extra_types = build_type_dict([parse_person])
            schema = "Optional: {person:Person?}"
            parser = parse.Parser(schema, extra_types)

            # -- PERFORM TESTS:
            self.assert_match(parser, "Optional: ", "person", None)
            self.assert_match(parser, "Optional: Alice", "person", "Alice")
            self.assert_match(parser, "Optional: Bob", "person", "Bob")

            # -- PARSE MISMATCH:
            self.assert_mismatch(parser, "Optional: Anna",
                                 "person")  # Similar1.
            self.assert_mismatch(parser, "Optional: Boby",
                                 "person")  # Similar2.
            self.assert_mismatch(parser, "Optional: a",
                                 "person")  # INVALID ...
        def test_cardinality_field_with_one_or_more(self):
            # -- SETUP:
            parse_person = TypeBuilder.make_choice(["Alice", "Bob", "Charly"])
            parse_person.name = "Person"      # For testing only.
            extra_types = build_type_dict([ parse_person ])
            schema = "List: {persons:Person+}"
            parser = parse.Parser(schema, extra_types)

            # -- PERFORM TESTS:
            self.assert_match(parser, "List: Alice", "persons", [ "Alice" ])
            self.assert_match(parser, "List: Bob",   "persons", [ "Bob" ])
            self.assert_match(parser, "List: Bob, Alice",
                                      "persons", [ "Bob", "Alice" ])

            # -- PARSE MISMATCH:
            self.assert_mismatch(parser, "List: ",       "persons")  # Zero items.
            self.assert_mismatch(parser, "List: BAlice", "persons")  # Unknown1.
            self.assert_mismatch(parser, "List: Boby",   "persons")  # Unknown2.
            self.assert_mismatch(parser, "List: Alice,", "persons")  # Trailing,
            self.assert_mismatch(parser, "List: a, b",   "persons")  # List of...
Esempio n. 18
0
        def test_cardinality_field_with_one_or_more(self):
            # -- SETUP:
            parse_person = TypeBuilder.make_choice(["Alice", "Bob", "Charly"])
            parse_person.name = "Person"  # For testing only.
            extra_types = build_type_dict([parse_person])
            schema = "List: {persons:Person+}"
            parser = parse.Parser(schema, extra_types)

            # -- PERFORM TESTS:
            self.assert_match(parser, "List: Alice", "persons", ["Alice"])
            self.assert_match(parser, "List: Bob", "persons", ["Bob"])
            self.assert_match(parser, "List: Bob, Alice", "persons",
                              ["Bob", "Alice"])

            # -- PARSE MISMATCH:
            self.assert_mismatch(parser, "List: ", "persons")  # Zero items.
            self.assert_mismatch(parser, "List: BAlice",
                                 "persons")  # Unknown1.
            self.assert_mismatch(parser, "List: Boby", "persons")  # Unknown2.
            self.assert_mismatch(parser, "List: Alice,",
                                 "persons")  # Trailing,
            self.assert_mismatch(parser, "List: a, b", "persons")  # List of...
from behave import *
from hamcrest import assert_that, equal_to
from vec3 import Vec3, vec3
from vec4 import Vec4, point, vector
import numpy as np
from shape import material, sphere, test_shape, default_world, point_light, glass_sphere
from base import hit, EPSILON, equal, World, render, translation, scaling, view_transform, intersection, intersections, prepare_computations,  world, camera, color, rotation_y, rotation_z, rotation_x
from parse_type import TypeBuilder
from step_helper import *

valid_test_objects = ["light"]
parse_test_object = TypeBuilder.make_choice(valid_test_objects)
register_type(TestObject=parse_test_object)

valid_test_variables = ["intensity", "position"]
parse_test_variable = TypeBuilder.make_choice(valid_test_variables)
register_type(TestVariable=parse_test_variable)

valid_light_elements = ["position", "intensity"]
parse_light_element = TypeBuilder.make_choice(valid_light_elements)
register_type(LightElement=parse_light_element)


@given("{item:TestVariable} ← color({r:g}, {g:g}, {b:g})")
def step_impl_color_assign(context, item, r, g, b):
    ensure_context_has_tuple(context)
    context.tuple[item] = color(float(r), float(g), float(b))


@given("{item:TestVariable} ← point({x:g}, {y:g}, {z:g})")
def step_impl_point_assign(context, item, x, y, z):
from behave import *
from hamcrest import assert_that, equal_to
import base
from parse_type import TypeBuilder
import numpy as np
from step_helper import *

valid_test_matrices = ["m"]
parse_test_matrix = TypeBuilder.make_choice(valid_test_matrices)
register_type(TestMatrix=parse_test_matrix)

valid_vec4_extensions = ["x", "y", "z", "w"]
parse_vec4_extension = TypeBuilder.make_choice(valid_vec4_extensions)
register_type(Vec4Ext=parse_vec4_extension)

valid_test_variables = ["origin", "direction", "m"]
parse_test_variable = TypeBuilder.make_choice(valid_test_variables)
register_type(TestVariable=parse_test_variable)

valid_test_rays = ["r", "r2"]
parse_test_ray = TypeBuilder.make_choice(valid_test_rays)
register_type(TestRay=parse_test_ray)

valid_ray_elements = ["origin", "direction"]
parse_ray_element = TypeBuilder.make_choice(valid_ray_elements)
register_type(RayElement=parse_ray_element)


@given(u'{item:TestVariable} ← point({x:g}, {y:g}, {z:g})')
def step_impl_generic_point(context, item, x, y, z):
    ensure_context_has_tuple(context)
Esempio n. 21
0
from behave import *
from hamcrest import assert_that, equal_to
from parse_type import TypeBuilder
from memblock import *
from step_helper import *

valid_test_variables = ["c", "c1", "c2"]
parse_test_variable = TypeBuilder.make_choice(valid_test_variables)
register_type(TestVariable=parse_test_variable)

valid_color_extensions = ["red", "green", "blue"]
parse_color_extension = TypeBuilder.make_choice(valid_color_extensions)
register_type(ColorExt=parse_color_extension)

valid_test_scalar_operations = ["*", "/", "+", "-"]
parse_test_scalar_operation = TypeBuilder.make_choice(
    valid_test_scalar_operations)
register_type(TestScalarOperation=parse_test_scalar_operation)

valid_test_add_operations = ["+", "-"]
parse_test_add_operation = TypeBuilder.make_choice(valid_test_add_operations)
register_type(TestAddOperation=parse_test_add_operation)


@given("{item:TestVariable} ← color({x:g}, {y:g}, {z:g})")
def step_impl_color(context, item, x, y, z):
    ensure_context_has_tuple(context)
    context.tuple[item] = Vec3(np.float32(x), np.float32(y), np.float32(z))


@then("{item:TestVariable}.{part:ColorExt} = {value:g}")
Esempio n. 22
0
    Scenario:
        Given I go to a shop to buy ingredients for a meal
        And I buy apples
        And I buy beef
"""

# @mark.user_defined_types
# ------------------------------------------------------------------------
# USER-DEFINED TYPES:
# ------------------------------------------------------------------------
from behave import matchers
from parse_type import TypeBuilder

# -- CHOICE: Constrain to a list of supported items (as string).
offered_shop_items = [ "apples", "beef", "potatoes", "pork" ]
parse_shop_item = TypeBuilder.make_choice(offered_shop_items)
matchers.register_type(ShopItem=parse_shop_item)

# @mark.steps
# ----------------------------------------------------------------------------
# STEPS:
# ----------------------------------------------------------------------------
from behave import given, when, then

@given(u"I go to a shop to buy ingredients for a meal")
def step_given_I_go_to_a_shop(context):
    context.shopping_cart = [ ]

@when(u"I buy {shop_item:ShopItem}")
def step_when_I_buy(context, shop_item):
    assert shop_item in offered_shop_items
 def test_with_optional__choice(self):
     # -- ALIAS FOR: zero_or_one
     parse_color = TypeBuilder.make_choice(["red", "green", "blue"])
     parse_opt_color = TypeBuilder.with_optional(parse_color)
     self.check_parse_choice_with_optional(parse_opt_color)
Esempio n. 24
0
    ScrollUp = "scroll up"
    ScrollDown = "scroll down"


class States:
    Visible = "visible"
    Showing = "showing"


def get_property_values(target):
    values = []
    for i in dir(target):
        value = getattr(target, i)
        if isinstance(value, str):
            values.append(value)
    return values


behave.register_type(Role=TypeBuilder.make_choice(get_property_values(Roles)))
behave.register_type(
    Action=TypeBuilder.make_choice(get_property_values(Actions)))
behave.register_type(
    State=TypeBuilder.make_choice(get_property_values(States)))


@parse.with_pattern(r"\s*\"[^\"]+\"\s*")
def parse_name(text: str):
    return text.strip(" \t\n\r\"")


behave.register_type(Name=parse_name)
Esempio n. 25
0
    "on":   True,   "off": False,
    "true": True,   "false": False,
})
parse_yesno.name = "YesNo"      # For testing only.

# -- ENUM CLASS:
class Color(Enum):
    red = 1
    green = 2
    blue = 3

parse_color = TypeBuilder.make_enum(Color)
parse_color.name = "Color"

# -- CHOICE DATATYPE:
parse_person_choice = TypeBuilder.make_choice(["Alice", "Bob", "Charly"])
parse_person_choice.name = "PersonChoice"      # For testing only.


# -----------------------------------------------------------------------------
# ABSTRACT TEST CASE:
# -----------------------------------------------------------------------------
class TestCase(unittest.TestCase):

    # -- PYTHON VERSION BACKWARD-COMPATIBILTY:
    if not hasattr(unittest.TestCase, "assertIsNone"):
        def assertIsNone(self, obj, msg=None):
            self.assert_(obj is None, msg)

        def assertIsNotNone(self, obj, msg=None):
            self.assert_(obj is not None, msg)
# DOMAIN MODEL:
# ----------------------------------------------------------------------------
class Meeting(object):
    def __init__(self):
        self.persons = set()


# @mark.user_defined_types
# ------------------------------------------------------------------------
# USER-DEFINED TYPES:
# ------------------------------------------------------------------------
from behave import matchers
from parse_type import TypeBuilder

company_persons = [ "Alice", "Bob", "Charly", "Dodo" ]
parse_person = TypeBuilder.make_choice(company_persons)
matchers.register_type(Person=parse_person)

# -- MANY-TYPE: Persons := list<Person> with list-separator = "and"
# parse_persons = TypeBuilder.with_one_or_more(parse_person, listsep="and")
parse_persons = TypeBuilder.with_many(parse_person, listsep="and")
matchers.register_type(PersonAndMore=parse_persons)


# @mark.steps
# ----------------------------------------------------------------------------
# STEPS:
# ----------------------------------------------------------------------------
from behave import given, when, then

# -- MANY-VARIANT 1: Use Cardinality field in parse expression (comma-separated)
Esempio n. 27
0
from behave import given, when, then, step, register_type
from parse_type import TypeBuilder

import sfctss
from sfctss.scheduler.examples import GreedyShortestDeadlineFirstScheduler, LoadUnawareRoundRobinScheduler, RejectScheduler

SCHEDULER_GREEDY_ORACLE = "GreedyOracle"
SCHEDULER_GREEDY_LOCAL = "GreedyLocal"
SCHEDULER_STATIC = "Static"
SCHEDULER_REJECT = "Reject"
schedulers = [
    SCHEDULER_GREEDY_ORACLE, SCHEDULER_GREEDY_LOCAL, SCHEDULER_STATIC,
    SCHEDULER_REJECT
]
parse_scheduler = TypeBuilder.make_choice(schedulers)
register_type(Scheduler=parse_scheduler)

DO = 'do'
DO_NOT = 'do not'
do_do_not = [DO, DO_NOT]
parse_do_do_not = TypeBuilder.make_choice(do_do_not)
register_type(DoDoNot=parse_do_do_not)

default_config = {
    'sff_bw_capacity': 1000,
    'sfi_rate': 15,
    'cpu_policy': 'one-at-a-time',
    'individual_class_per_egress': False,
    'latency_between_sites': 1000,
    'latency_within_sites': 10,
Esempio n. 28
0
from behave import *
from hamcrest import assert_that, equal_to
from vec3 import Vec3, vec3
from vec4 import Vec4, point, vector
from base import equal
import numpy as np
from shape import material, sphere, test_shape, point_light, plane
from base import render, translation, scaling, view_transform, world, camera, color, rotation_y, rotation_z, rotation_x
from parse_type import TypeBuilder
from step_helper import *

valid_test_planes = ["p", "shape", "lower", "upper"]
parse_test_plane = TypeBuilder.make_choice(valid_test_planes)
register_type(TestPlane=parse_test_plane)

valid_test_objects = ["m"]
parse_test_object = TypeBuilder.make_choice(valid_test_objects)
register_type(TestObject=parse_test_object)

valid_intersect_list_names = ["xs"]
parse_intersect_list_name = TypeBuilder.make_choice(valid_intersect_list_names)
register_type(ListName=parse_intersect_list_name)

valid_test_variables = ["n1", "n2", "n3"]
parse_test_variable = TypeBuilder.make_choice(valid_test_variables)
register_type(TestVariable=parse_test_variable)

valid_test_rays = ["r"]
parse_test_ray = TypeBuilder.make_choice(valid_test_rays)
register_type(TestRay=parse_test_ray)
Esempio n. 29
0
    Scenario:
        Given I go to a shop to buy ingredients for a meal
        And I buy apples
        And I buy beef
"""

# @mark.user_defined_types
# ------------------------------------------------------------------------
# USER-DEFINED TYPES:
# ------------------------------------------------------------------------
from behave import register_type
from parse_type import TypeBuilder

# -- CHOICE: Constrain to a list of supported items (as string).
offered_shop_items = [ "apples", "beef", "potatoes", "pork" ]
parse_shop_item = TypeBuilder.make_choice(offered_shop_items)
register_type(ShopItem=parse_shop_item)

# @mark.steps
# ----------------------------------------------------------------------------
# STEPS:
# ----------------------------------------------------------------------------
from behave import given, when, then

@given(u"I go to a shop to buy ingredients for a meal")
def step_given_I_go_to_a_shop(context):
    context.shopping_cart = [ ]

@when(u"I buy {shop_item:ShopItem}")
def step_when_I_buy(context, shop_item):
    assert shop_item in offered_shop_items
from behave import *
from hamcrest import assert_that, equal_to
from parse_type import TypeBuilder
from step_helper import *

valid_test_variables = ["c", "c1", "c2", "c3", "red"]
parse_test_variable = TypeBuilder.make_choice(valid_test_variables)
register_type(TestVariable=parse_test_variable)

valid_color_extensions = ["red", "green", "blue"]
parse_color_extension = TypeBuilder.make_choice(valid_color_extensions)
register_type(ColorExt=parse_color_extension)

valid_components = ["width", "height", "background", "data"]
parse_valid_component = TypeBuilder.make_choice(valid_components)
register_type(CanvasComponent=parse_valid_component)


@given(u'{item:TestVariable} ← canvas({width:g}, {height:g})')
def step_impl_generic_canvas(context, item, width, height):
    ensure_context_has_dict(context)
    context.dict[item] = canvas(int(width), int(height))


@then("{item:TestVariable}.{part:CanvasComponent} = {value:g}")
def step_then_component_equals_value(context, item, part, value):
    assert part in valid_components
    item_string = 'context.dict["' + str(item) + '"].' + str(part)
    assert_that(eval(item_string), equal_to(float(value)))

Esempio n. 31
0
# @mark.user_defined_types
# ------------------------------------------------------------------------
# USER-DEFINED TYPES:
# ------------------------------------------------------------------------
from behave import matchers
from parse_type import TypeBuilder


def slurp_space(text):
    return text


slurp_space.pattern = r"\s*"
matchers.register_type(slurp_space=slurp_space)

parse_color = TypeBuilder.make_choice(["red", "green", "blue", "yellow"])
matchers.register_type(Color=parse_color)

# -- MANY-TYPE: Persons := list<Person> with list-separator = "and"
# parse_colors = TypeBuilder.with_many0(parse_color, listsep="and")
parse_colors0 = TypeBuilder.with_zero_or_more(parse_color, listsep="and")
matchers.register_type(OptionalColorAndMore=parse_colors0)

# @mark.steps
# ----------------------------------------------------------------------------
# STEPS:
# ----------------------------------------------------------------------------
from behave import given, when, then


# -- MANY-VARIANT 1: Use Cardinality field in parse expression (comma-separated)
})
parse_yesno.name = "YesNo"  # For testing only.


# -- ENUM CLASS:
class Color(Enum):
    red = 1
    green = 2
    blue = 3


parse_color = TypeBuilder.make_enum(Color)
parse_color.name = "Color"

# -- CHOICE DATATYPE:
parse_person_choice = TypeBuilder.make_choice(["Alice", "Bob", "Charly"])
parse_person_choice.name = "PersonChoice"  # For testing only.


# -----------------------------------------------------------------------------
# ABSTRACT TEST CASE:
# -----------------------------------------------------------------------------
class TestCase(unittest.TestCase):

    # -- PYTHON VERSION BACKWARD-COMPATIBILTY:
    if not hasattr(unittest.TestCase, "assertIsNone"):

        def assertIsNone(self, obj, msg=None):
            self.assert_(obj is None, msg)

        def assertIsNotNone(self, obj, msg=None):
Esempio n. 33
0
from behave import *
from hamcrest import assert_that, equal_to
from parse_type import TypeBuilder
from step_helper import *

valid_Vec4_extensions = ["x", "y", "z", "w"]
parse_Vec4_extension = TypeBuilder.make_choice(valid_Vec4_extensions)
register_type(Vec4Ext=parse_Vec4_extension)

valid_test_variables = [
    "v", "v1", "v2", "p", "a", "b", "zero", "norm", "n", "r"
]
parse_test_variable = TypeBuilder.make_choice(valid_test_variables)
register_type(TestVariable=parse_test_variable)


@given("{item:TestVariable} ← tuple({x}, {y}, {z}, {w})")
def step_impl_generic_tuple(context, item, x, y, z, w):
    ensure_context_has_tuple(context)
    context.tuple[item] = Vec4(np.float32(x), np.float32(y), np.float32(z),
                               np.float32(w))


@given(u'{item:TestVariable} ← point({x:g}, {y:g}, {z:g})')
def step_impl_generic_point(context, item, x, y, z):
    ensure_context_has_tuple(context)
    context.tuple[item] = point(np.float32(x), np.float32(y), np.float32(z))


@given(
    u'{item:TestVariable} ← vector(√{x_numerator:g}/{x_denom:g}, √{y_numerator:g}/{y_denom:g}, {z:g})'
from behave import *
from hamcrest import assert_that, equal_to
from vec3 import Vec3, vec3
from vec4 import Vec4, point, vector
from base import equal, normalize, transform, ray
import numpy as np
from shape import material, sphere, test_shape, normal_at, set_transform, intersect, glass_sphere, point_light
from base import render, translation, scaling, view_transform, world, camera, color, rotation_y, rotation_z, rotation_x
from parse_type import TypeBuilder
from step_helper import *

valid_test_solids = ["s", "s2", "s3", "shape"]
parse_test_solid = TypeBuilder.make_choice(valid_test_solids)
register_type(TestSolid=parse_test_solid)

valid_test_objects = ["m"]
parse_test_object = TypeBuilder.make_choice(valid_test_objects)
register_type(TestObject=parse_test_object)

valid_test_matrices = ["t", "m"]
parse_test_matrix = TypeBuilder.make_choice(valid_test_matrices)
register_type(TestMatrix=parse_test_matrix)

valid_vec4_extensions = ["x", "y", "z", "w"]
parse_vec4_extension = TypeBuilder.make_choice(valid_vec4_extensions)
register_type(Vec4Ext=parse_vec4_extension)

valid_test_variables = ["origin", "direction", "n"]
parse_test_variable = TypeBuilder.make_choice(valid_test_variables)
register_type(TestVariable=parse_test_variable)
from behave import *
from hamcrest import assert_that, equal_to
from vec3 import Vec3, vec3
from vec4 import Vec4, point, vector
import numpy as np
from shape import material, sphere, test_shape, default_world, point_light
from base import equal, intersect_world, shade_hit, is_shadowed, color_at, World, render, translation, scaling, view_transform, world, camera, color, rotation_y, rotation_z, rotation_x
from parse_type import TypeBuilder
from step_helper import *

valid_test_objects = ["cyl"]
parse_test_object = TypeBuilder.make_choice(valid_test_objects)
register_type(TestObject=parse_test_object)

valid_test_variables = ["direction", "normal", "n"]
parse_test_variable = TypeBuilder.make_choice(valid_test_variables)
register_type(TestVariable=parse_test_variable)

valid_light_elements = ["position", "intensity"]
parse_light_element = TypeBuilder.make_choice(valid_light_elements)
register_type(LightElement=parse_light_element)

valid_material_elements = [
    "color", "ambient", "diffuse", "specular", "shininess", "reflective",
    "transparency", "refractive_index"
]
parse_material_element = TypeBuilder.make_choice(valid_material_elements)
register_type(MaterialElement=parse_material_element)

valid_world_elements = ["light", "objects"]
parse_world_element = TypeBuilder.make_choice(valid_world_elements)
Esempio n. 36
0
# DOMAIN MODEL:
# ----------------------------------------------------------------------------
class Meeting(object):
    def __init__(self):
        self.persons = set()


# @mark.user_defined_types
# ------------------------------------------------------------------------
# USER-DEFINED TYPES:
# ------------------------------------------------------------------------
from behave import matchers
from parse_type import TypeBuilder

company_persons = ["Alice", "Bob", "Charly", "Dodo"]
parse_person = TypeBuilder.make_choice(company_persons)
matchers.register_type(Person=parse_person)

# -- MANY-TYPE: Persons := list<Person> with list-separator = "and"
# parse_persons = TypeBuilder.with_one_or_more(parse_person, listsep="and")
parse_persons = TypeBuilder.with_many(parse_person, listsep="and")
matchers.register_type(PersonAndMore=parse_persons)

# @mark.steps
# ----------------------------------------------------------------------------
# STEPS:
# ----------------------------------------------------------------------------
from behave import given, when, then


# -- MANY-VARIANT 1: Use Cardinality field in parse expression (comma-separated)
    def calculate_price_for_vegetable(self, vegetable, amount):
        price_per_unit = self.vegetable_price_list[vegetable]
        return price_per_unit*amount

    def calculate_price_for(self, shop_item, amount):
        price_per_unit = self.common_price_list[shop_item]
        return price_per_unit*amount

# @mark.user_defined_types
# ------------------------------------------------------------------------
# USER-DEFINED TYPES:
# ------------------------------------------------------------------------
from behave import register_type
from parse_type import TypeBuilder

parse_vegetable = TypeBuilder.make_choice(["cucumbers", "lettuce"])
register_type(Vegetable=parse_vegetable)

parse_fruit = TypeBuilder.make_choice(["apples", "pears"])
register_type(Fruit=parse_fruit)

# @mark.steps
# ----------------------------------------------------------------------------
# STEPS:
# ----------------------------------------------------------------------------
from behave import given, when, then

@given(u"I go to a shop")
def step_given_I_go_to_a_shop(context):
    context.shop = Shop()
    context.shopping_cart = [ ]
from behave import *
from hamcrest import assert_that, equal_to
import base
from parse_type import TypeBuilder
import numpy as np
from step_helper import *

valid_test_objects = ["hsize", "vsize","field_of_view", "c", "w"]
parse_test_object = TypeBuilder.make_choice(valid_test_objects)
register_type(TestObject=parse_test_object)

valid_test_variables = ["up", "from", "to"]
parse_test_variable = TypeBuilder.make_choice(valid_test_variables)
register_type(TestVariable=parse_test_variable)

valid_camera_elements = ["hsize", "vsize", "field_of_view", "transform", "pixel_size"]
parse_camera_element = TypeBuilder.make_choice(valid_camera_elements)
register_type(CameraElement=parse_camera_element)

valid_test_rays = ["r"]
parse_test_ray = TypeBuilder.make_choice(valid_test_rays)
register_type(TestRay=parse_test_ray)


@given("{item:TestObject} ← {value_num}/{value_denom:g}")
def step_given_object_value(context, item, value_num, value_denom):
    ensure_context_has_dict(context)
    value_num = np.pi if value_num == "π" else float(value_num)
    value_denom = float(value_denom)
    context.dict[str(item)] = (value_num / value_denom)
from behave import *
from hamcrest import assert_that, equal_to
from parse_type import TypeBuilder
from step_helper import *

valid_test_matrices = ["M", "A", "B", "C", "inv", "half_quarter"]
parse_test_matrix = TypeBuilder.make_choice(valid_test_matrices)
register_type(TestMatrix=parse_test_matrix)

valid_test_variables = ["b", "a"]
parse_test_variable = TypeBuilder.make_choice(valid_test_variables)
register_type(TestVariable=parse_test_variable)


#@given("the following 4x4 matrix {item:TestVariable}: {matrix}")
@given("the following {height:g}x{width:g} matrix {item:TestMatrix}: {matrix}")
def step_impl_matrix(context, height, width, item, matrix):
    ensure_context_has_dict(context)
    new_matrix_string = "np.array(" + matrix + ", dtype=float)"
    new_matrix = eval(new_matrix_string)
    assert (new_matrix.shape == (height, width))
    context.dict[item] = new_matrix


@given("{item:TestMatrix} ← transpose(identity_matrix)")
def step_identity_transpose_matrix(context, item):
    ensure_context_has_dict(context)
    dim = 4
    new_matrix = np.identity(dim, dtype=float)
    assert (new_matrix.shape == (dim, dim))
    context.dict[item] = np.transpose(new_matrix)
Esempio n. 40
0
        price_per_unit = self.vegetable_price_list[vegetable]
        return price_per_unit * amount

    def calculate_price_for(self, shop_item, amount):
        price_per_unit = self.common_price_list[shop_item]
        return price_per_unit * amount


# @mark.user_defined_types
# ------------------------------------------------------------------------
# USER-DEFINED TYPES:
# ------------------------------------------------------------------------
from behave import matchers
from parse_type import TypeBuilder

parse_vegetable = TypeBuilder.make_choice(["cucumbers", "lettuce"])
matchers.register_type(Vegetable=parse_vegetable)

parse_fruit = TypeBuilder.make_choice(["apples", "pears"])
matchers.register_type(Fruit=parse_fruit)

# @mark.steps
# ----------------------------------------------------------------------------
# STEPS:
# ----------------------------------------------------------------------------
from behave import given, when, then


@given(u"I go to a shop")
def step_given_I_go_to_a_shop(context):
    context.shop = Shop()
Esempio n. 41
0
        text = text[1:-1]

    # first substitute any {Variable} with context.Variable
    result = re.sub(r'{(?P<var>\w+)}', r'context.\g<var>', text)

    if isEval:
        result = eval(result)

    return result


parse_numbers = TypeBuilder.with_many(parse_number, listsep=",")
parse_words = TypeBuilder.with_many(parse_word, listsep=",")
parse_hexs = TypeBuilder.with_many(parse_hex, listsep=",")
parse_one_hex = TypeBuilder.with_zero_or_one(parse_hex)
parse_is_is_not = TypeBuilder.make_choice(["is", "is NOT"])
parse_have_not_have = TypeBuilder.make_choice(["have", "NOT have"])
parse_has_does_not_have = TypeBuilder.make_choice(["has", "does NOT have"])
parse_one_context_variables = TypeBuilder.with_zero_or_one(
    parse_context_variable)
type_dict = {
    'd+': parse_numbers,
    'w+': parse_words,
    'h': parse_one_hex,
    'h+': parse_hexs,
    'is': parse_is_is_not,
    'have': parse_have_not_have,
    'has': parse_has_does_not_have,
    'cv': parse_one_context_variables
}
register_type(**type_dict)
      | blue  |
"""

# @mark.user_defined_types
# ------------------------------------------------------------------------
# USER-DEFINED TYPES:
# ------------------------------------------------------------------------
from behave import register_type
from parse_type import TypeBuilder

def slurp_space(text):
    return text
slurp_space.pattern = r"\s*"
register_type(slurp_space=slurp_space)

parse_color = TypeBuilder.make_choice([ "red", "green", "blue", "yellow" ])
register_type(Color=parse_color)

# -- MANY-TYPE: Persons := list<Person> with list-separator = "and"
# parse_colors = TypeBuilder.with_many0(parse_color, listsep="and")
parse_colors0A= TypeBuilder.with_zero_or_more(parse_color, listsep="and")
register_type(OptionalColorAndMore=parse_colors0A)

# -- NEEDED-UNTIL: parse_type.cfparse.Parser is used by behave.
# parse_colors0C = TypeBuilder.with_zero_or_more(parse_color)
# type_dict = {"Color*": parse_colors0C}
# register_type(**type_dict)


# @mark.steps
# ----------------------------------------------------------------------------
from behave import *
from hamcrest import assert_that, equal_to
from parse_type import TypeBuilder
from step_helper import *

valid_test_shapes = ["s"]
parse_test_shape = TypeBuilder.make_choice(valid_test_shapes)
register_type(TestShape=parse_test_shape)

valid_shape_elements = ["material", "transform"]
parse_shape_element = TypeBuilder.make_choice(valid_shape_elements)
register_type(ShapeElement=parse_shape_element)

valid_test_objects = ["m"]
parse_test_object = TypeBuilder.make_choice(valid_test_objects)
register_type(TestObject=parse_test_object)

valid_group_objects = ["g1", "g2"]
parse_group_object = TypeBuilder.make_choice(valid_group_objects)
register_type(GroupObject=parse_group_object)

valid_intersect_list_names = ["xs"]
parse_intersect_list_name = TypeBuilder.make_choice(valid_intersect_list_names)
register_type(ListName=parse_intersect_list_name)

valid_test_variables = ["p", "n"]
parse_test_variable = TypeBuilder.make_choice(valid_test_variables)
register_type(TestVariable=parse_test_variable)

valid_test_rays = ["r"]
parse_test_ray = TypeBuilder.make_choice(valid_test_rays)