Esempio n. 1
0
    def test_stack_agg(self):
        query = Query.from_vegalite({
            'mark': 'bar',
            'encoding': {
                'x': {
                    'type': 'nominal',
                    'field': 'n1',
                },
                'y': {
                    'type': 'quantitative',
                    'field': 'q1',
                    'stack': 'zero',
                    'aggregate': 'sum'
                },
                'detail': {
                    'type': 'nominal',
                    'field': 'n2'
                },
                'color': {
                    'type': 'quantitative',
                    'field': 'q2',
                    'aggregate': 'mean'
                }
            }
        })

        assert is_valid(Task(data, query), True) == True
Esempio n. 2
0
    def __mutate_spec(self, base_spec: Spec, props: List[str], prop_index: int,
                      seen: Set[Spec], specs: List[Spec]):
        # base case
        if (prop_index == len(props)):
            self.model.post_improve(base_spec, props)
            base_spec['data'] = {'url': self.data_url}

            # within a group, don't repeat the same specs
            if not (base_spec in seen):
                seen.add(base_spec)

                query = Query.from_vegalite(base_spec)

                if (is_valid(Task(self.data, query))):
                    specs.append(base_spec)
        # recursive case
        else:
            prop_to_mutate = props[prop_index]
            for enum in self.model.get_enums(prop_to_mutate):
                spec = deepcopy(base_spec)
                self.model.mutate_prop(spec, prop_to_mutate, enum)

                # recursive call
                self.__mutate_spec(spec, props, prop_index + 1, seen, specs)

        return
Esempio n. 3
0
def test_is_valid():
    data = Data(fields=[Field('foo', 'number')])

    invalid = Query.from_vegalite({
        'mark': 'text',
        'encoding': {
            'x': {'field': 'foo', 'type': 'quantitative'}
        }
    })

    assert is_valid(Task(data, invalid)) == False

    valid = Query.from_vegalite({
        'mark': 'point',
        'encoding': {
            'x': {'field': 'foo', 'type': 'quantitative'}
        }
    })
    assert is_valid(Task(data, valid)) == True
Esempio n. 4
0
    def test_one_bar(self):
        query = Query.from_vegalite({
            'mark': 'bar',
            'encoding': {
                'y': {
                    'type': 'quantitative',
                    'field': 'q1'
                }
            }
        })

        assert is_valid(Task(data, query), True) == True
Esempio n. 5
0
    def test_row_only(self):
        query = Query.from_vegalite({
            'mark': 'point',
            'encoding': {
                'row': {
                    'type': 'nominal',
                    'field': 'n1'
                }
            }
        })

        assert is_valid(Task(data, query), True) == False
Esempio n. 6
0
    def test_only_one_agg(self):
        query = Query.from_vegalite({
            'mark': 'point',
            'encoding': {
                'x': {
                    'type': 'quantitative',
                    'field': 'q1'
                },
                'y': {
                    'type': 'quantitative',
                    'field': 'q2',
                    'aggregate': 'mean'
                }
            }
        })

        assert is_valid(Task(data, query), True) == False
Esempio n. 7
0
    def test_heatmap(self):
        query = Query.from_vegalite({
            'mark': 'rect',
            'encoding': {
                'x': {
                    'type': 'nominal',
                    'field': 'n1',
                },
                'y': {
                    'type': 'ordinal',
                    'field': 'q1',
                    'bin': True
                }
            }
        })

        assert is_valid(Task(data, query), True) == True
Esempio n. 8
0
    def test_hist(self):
        query = Query.from_vegalite({
            'mark': 'bar',
            'encoding': {
                'x': {
                    'type': 'quantitative',
                    'field': 'q1',
                    'bin': True
                },
                'y': {
                    'type': 'quantitative',
                    'aggregate': 'count'
                }
            }
        })

        assert is_valid(Task(data, query), True) == True
Esempio n. 9
0
    def test_scatter(self):
        query = Query.from_vegalite({
            'mark': 'point',
            'encoding': {
                'x': {
                    'type': 'quantitative',
                    'field': 'q1',
                },
                'y': {
                    'type': 'quantitative',
                    'field': 'q2'
                },
                'color': {
                    'type': 'nominal',
                    'field': 'n2'
                },
                'size': {
                    'type': 'quantitative',
                    'field': 'q3'
                }
            }
        })

        assert is_valid(Task(data, query), True) == True
Esempio n. 10
0
    def test_stack_q_q(self):
        query = Query.from_vegalite({
            'mark': 'area',
            'encoding': {
                'x': {
                    'type': 'quantitative',
                    'field': 'q1',
                    'scale': {
                        'zero': False
                    }
                },
                'y': {
                    'type': 'quantitative',
                    'field': 'q2',
                    'stack': 'zero'
                },
                'color': {
                    'type': 'nominal',
                    'field': 'n1'
                }
            }
        })

        assert is_valid(Task(data, query), True) == True