コード例 #1
0
def test_duplicate_name_raises(source_doc, source_spec, target_spec):
    source_doc["list_source_1"]["Stacy"] = {"Name": "Another Stacy"}
    with pytest.raises(ValueError):
        source_track: Track = Track.build(source_spec, None, "Source")
        target_track: Track = Track.build(target_spec, source_track, "Target")
        translate: Translate = Translate(target_track)
        translate(source_doc)
コード例 #2
0
def test_list_in_folder(source, target):
    source_spec, source_doc = source
    target_spec, expected = target()
    source_track: Track = Track.build(source_spec, None, "Source")
    target_track: Track = Track.build(target_spec, source_track, "Target")
    translate: Translate = Translate(target_track)
    actual: Dict = translate(source_doc)
    assert actual == expected
コード例 #3
0
def test_rearrange(source_doc: Dict, source_spec: Dict, target_doc: Dict, target_spec: Dict):
    """Verify that translate respects the sort order property of the variables in the target spec, and ignores the
    order in which the variables happen to be defined in the spec. """
    shuffled_source_spec = shuffle(source_spec)
    shuffled_target_spec = shuffle(target_spec)
    source_track: Track = Track.build(shuffled_source_spec, None, "Source")
    target_track: Track = Track.build(shuffled_target_spec, source_track, "Target")
    translate: Translate = Translate(target_track)
    actual: Dict = translate(source_doc)
    assert actual == target_doc
コード例 #4
0
def test_named_list_in_list(source, target):
    """Reversing the order of the sources in the target list spec results in an equivalent change in the order of the
    resulting list."""
    source_spec, source_doc = source
    target_spec, target_doc = target
    source_track: Track = Track.build(source_spec, None, "Source")
    target_track: Track = Track.build(target_spec, source_track, "Target")
    translate: Translate = Translate(target_track)
    actual: Dict = translate(source_doc)
    assert actual == target_doc
コード例 #5
0
def test_translate_with_folders(source: Callable, target: Callable):
    """Summary: verify that source topology doesn't matter for a given target spec.

    Long version: Try every combination of the above examples. Because a target variable's source is defined by ID,
    the particular location of the source variable in the source hierarchy is irrelevant. That is, no matter how the
    source hierarchy is arranged, a target spec should produce the same target hierarchy as long as all the source
    variables exist."""
    source_doc, source_spec = source()
    expected, target_spec = target()
    source_track: Track = Track.build(source_spec, None, "Source")
    target_track: Track = Track.build(target_spec, source_track, "Target")
    translate: Translate = Translate(target_track)
    actual: Dict = translate(source_doc)
    assert actual == expected
コード例 #6
0
 def build(cls, path_locator, schema, target_schema):
     target_schema = Schema.load(path_locator, target_schema, schema)
     translate_invariant = Translate(target_schema.invariant)
     translate_temporal = Translate(target_schema.temporal)
     return cls(target_schema, translate_invariant, translate_temporal)
コード例 #7
0
def translate(source_spec: Dict, target_spec: Dict) -> Translate:
    source_track: Track = Track.build(source_spec, None, "Source")
    target_track: Track = Track.build(target_spec, source_track, "Target")
    translate: Translate = Translate(target_track)
    return translate
コード例 #8
0
def do_test(s_doc, s_spec, t_doc, t_spec):
    source_track: Track = Track.build(s_spec, None, "Source")
    target_track: Track = Track.build(t_spec, source_track, "Target")
    translate: Translate = Translate(target_track)
    actual: Dict = translate(s_doc)
    assert actual == t_doc
コード例 #9
0
def _do_test(source_spec, source_doc, target_spec, expected):
    source_track: Track = Track.build(source_spec, None, "Source")
    target_track: Track = Track.build(target_spec, source_track, "Target")
    translate: Translate = Translate(target_track)
    actual: Dict = translate(source_doc)
    assert actual == expected