Beispiel #1
0
 def test_bad_typed_field_selector(self):
     table = Table([
         ["Alice", 33],
         ["Bob", 44],
         ["Carol", 55],
         ["Dave", 66],
     ], keys=["name", "age"])
     with self.assertRaises(TypeError):
         _ = table.field(object)
Beispiel #2
0
 def test_write_with_skip_and_limit(self):
     table = Table([
         ["Alice", 33],
         ["Bob", 44],
         ["Carol", 55],
         ["Dave", 66],
     ], keys=["name", "age"])
     out = StringIO()
     table.write(out, skip=1, limit=2)
     self.assertEqual(out.getvalue(), u' Bob   | 44 \r\n'
                                      u' Carol | 55 \r\n')
Beispiel #3
0
 def test_write_csv_with_limit(self):
     table = Table([
         ["Alice", 33],
         ["Bob", 44],
         ["Carol", 55],
         ["Dave", 66],
     ], keys=["name", "age"])
     out = StringIO()
     table.write_csv(out, limit=2)
     self.assertEqual(out.getvalue(), u'Alice,33\r\n'
                                      u'Bob,44\r\n')
Beispiel #4
0
 def test_write_csv_with_quotes_in_value(self):
     table = Table([
         ["Alice", 33],
         ["Bob", 44],
         ["Carol", 55],
         ["Dave \"Nordberg\" Smith", 66],
     ], keys=["name", "age"])
     out = StringIO()
     table.write_csv(out)
     self.assertEqual(out.getvalue(), u'Alice,33\r\n'
                                      u'Bob,44\r\n'
                                      u'Carol,55\r\n'
                                      u'"Dave ""Nordberg"" Smith",66\r\n')
Beispiel #5
0
 def test_write_csv_with_none_in_value(self):
     table = Table([
         ["Alice", 33],
         ["Bob", 44],
         ["Carol", 55],
         ["Dave", None],
     ], keys=["name", "age"])
     out = StringIO()
     table.write_csv(out)
     self.assertEqual(out.getvalue(), u'Alice,33\r\n'
                                      u'Bob,44\r\n'
                                      u'Carol,55\r\n'
                                      u'Dave,\r\n')
Beispiel #6
0
 def test_write_tsv(self):
     table = Table([
         ["Alice", 33],
         ["Bob", 44],
         ["Carol", 55],
         ["Dave", 66],
     ], keys=["name", "age"])
     out = StringIO()
     table.write_tsv(out)
     self.assertEqual(out.getvalue(), u'Alice\t33\r\n'
                                      u'Bob\t44\r\n'
                                      u'Carol\t55\r\n'
                                      u'Dave\t66\r\n')
Beispiel #7
0
 def test_write_with_newline_in_value(self):
     table = Table([
         ["Alice\nSmith", 33],
         ["Bob", 44],
         ["Carol", 55],
         ["Dave", 66],
     ], keys=["name", "age"])
     out = StringIO()
     table.write(out)
     self.assertEqual(out.getvalue(), u' Alice | 33 \r\n'
                                      u' Smith |    \r\n'
                                      u' Bob   | 44 \r\n'
                                      u' Carol | 55 \r\n'
                                      u' Dave  | 66 \r\n')
Beispiel #8
0
 def test_write_csv_with_header_style(self):
     table = Table([
         ["Alice", 33],
         ["Bob", 44],
         ["Carol", 55],
         ["Dave", 66],
     ], keys=["name", "age"])
     out = StringIO()
     table.write_csv(out, header={"fg": "cyan"})
     self.assertEqual(out.getvalue(), u'name,age\r\n'
                                      u'Alice,33\r\n'
                                      u'Bob,44\r\n'
                                      u'Carol,55\r\n'
                                      u'Dave,66\r\n')
Beispiel #9
0
 def test_mixed_types(self):
     table = Table([
         ["Alice", 33],
         ["Bob", 44],
         ["Carol", 55.5],
         ["Dave", 66.6],
     ], keys=["name", "age"])
     self.assertEqual(table.keys(), ["name", "age"])
     name_field = table.field(0)
     self.assertEqual(name_field["type"], str)
     self.assertEqual(name_field["optional"], False)
     age_field = table.field(1)
     self.assertEqual(set(age_field["type"]), {int, float})
     self.assertEqual(age_field["optional"], False)
Beispiel #10
0
 def test_simple_usage(self):
     table = Table([
         ["Alice", 33],
         ["Bob", 44],
         ["Carol", 55],
         ["Dave", 66],
     ], keys=["name", "age"])
     self.assertEqual(table.keys(), ["name", "age"])
     name_field = table.field(0)
     self.assertEqual(name_field["type"], str)
     self.assertEqual(name_field["optional"], False)
     age_field = table.field(1)
     self.assertEqual(age_field["type"], int)
     self.assertEqual(age_field["optional"], False)
Beispiel #11
0
 def test_optional_fields(self):
     table = Table([
         ["Alice", 33],
         ["Bob", 44],
         ["Carol", None],
         [None, 66],
     ], keys=["name", "age"])
     self.assertEqual(table.keys(), ["name", "age"])
     name_field = table.field(0)
     self.assertEqual(name_field["type"], str)
     self.assertEqual(name_field["optional"], True)
     age_field = table.field(1)
     self.assertEqual(age_field["type"], int)
     self.assertEqual(age_field["optional"], True)
Beispiel #12
0
 def test_write_with_style(self):
     table = Table([
         ["Alice", 33],
         ["Bob", 44],
         ["Carol", 55],
         ["Dave", 66],
     ], keys=["name", "age"])
     out = StringIO()
     table.write(out, header={"fg": "red"})
     self.assertEqual(out.getvalue(), u' name  | age \r\n'
                                      u'-------|-----\r\n'
                                      u' Alice |  33 \r\n'
                                      u' Bob   |  44 \r\n'
                                      u' Carol |  55 \r\n'
                                      u' Dave  |  66 \r\n')
Beispiel #13
0
 def test_missing_keys(self):
     with self.assertRaises(ValueError):
         _ = Table([
             ["Alice", 33],
             ["Bob", 44],
             ["Carol", 55],
             ["Dave", 66],
         ])
Beispiel #14
0
    def to_table(self):
        """ Consume and extract the entire result as a :class:`.Table`
        object.

        :return: the full query result
        """
        from py2neo.integration import Table
        return Table(self)
Beispiel #15
0
 def test_repr(self):
     table = Table([
         ["Alice", 33],
         ["Bob", 44],
         ["Carol", 55],
         ["Dave", 66],
     ], keys=["name", "age"])
     out = repr(table)
     self.assertEqual(out, u' name  | age \r\n'
                           u'-------|-----\r\n'
                           u' Alice |  33 \r\n'
                           u' Bob   |  44 \r\n'
                           u' Carol |  55 \r\n'
                           u' Dave  |  66 \r\n')
Beispiel #16
0
 def test_fields_by_name_usage(self):
     table = Table([
         ["Alice", 33],
         ["Bob", 44],
         ["Carol", 55],
         ["Dave", 66],
     ], keys=["name", "age"])
     self.assertEqual(table.keys(), ["name", "age"])
     name_field = table.field("name")
     self.assertEqual(name_field["type"], str)
     self.assertEqual(name_field["optional"], False)
     age_field = table.field("age")
     self.assertEqual(age_field["type"], int)
     self.assertEqual(age_field["optional"], False)
     with self.assertRaises(KeyError):
         _ = table.field("gender")
Beispiel #17
0
    def preview(self, limit=None):
        """ Construct a :class:`.Table` containing a preview of
        upcoming records, including no more than the given `limit`.

        :param limit: maximum number of records to include in the
            preview
        :returns: :class:`.Table` containing the previewed records
        """
        from py2neo.integration import Table
        if not limit:
            limit = self.sample_size
        elif limit < 0:
            raise ValueError("Illegal preview size")
        else:
            limit = int(limit)
        records = []
        if self._fields:
            for values in self._result.peek(limit):
                if self._hydrant:
                    values = self._hydrant.hydrate_list(values)
                records.append(values)
            return Table(records, self._fields)
        else:
            return None