コード例 #1
0
ファイル: test_resource.py プロジェクト: kant/frictionless-py
def test_resource_source_non_tabular_error_bad_path():
    resource = Resource(path="data/bad.txt")
    with pytest.raises(exceptions.FrictionlessException) as excinfo:
        resource.read_bytes()
    error = excinfo.value.error
    assert error.code == "scheme-error"
    assert error.note.count("data/bad.txt")
コード例 #2
0
ファイル: test_resource.py プロジェクト: kant/frictionless-py
def test_resource_source_data():
    data = [["id", "name"], ["1", "english"], ["2", "中国人"]]
    resource = Resource({"data": data})
    assert resource.path is None
    assert resource.data == data
    assert resource.source == data
    assert resource.basepath == ""
    assert resource.inline is True
    assert resource.tabular is True
    assert resource.multipart is False
    assert resource.read_bytes() == b""
    assert resource.read_data() == data[1:]
    assert resource.read_rows() == [
        {
            "id": 1,
            "name": "english"
        },
        {
            "id": 2,
            "name": "中国人"
        },
    ]
    assert resource.read_header() == ["id", "name"]
    assert resource.read_sample() == data[1:]
    assert resource.read_stats() == {
        "hash": "",
        "bytes": 0,
        "fields": 2,
        "rows": 2,
    }
コード例 #3
0
ファイル: test_resource.py プロジェクト: kant/frictionless-py
def test_resource_source_path():
    path = "data/table.csv"
    resource = Resource({"path": path})
    assert resource.path == path
    assert resource.data is None
    assert resource.source == path
    assert resource.basepath == ""
    assert resource.inline is False
    assert resource.tabular is True
    assert resource.multipart is False
    assert (resource.read_bytes() ==
            b"id,name\n1,english\n2,\xe4\xb8\xad\xe5\x9b\xbd\xe4\xba\xba\n")
    assert resource.read_data() == [["1", "english"], ["2", "中国人"]]
    assert resource.read_rows() == [
        {
            "id": 1,
            "name": "english"
        },
        {
            "id": 2,
            "name": "中国人"
        },
    ]
    assert resource.read_header() == ["id", "name"]
    assert resource.read_sample() == [["1", "english"], ["2", "中国人"]]
    assert resource.read_stats() == {
        "hash": "6c2c61dd9b0e9c6876139a449ed87933",
        "bytes": 30,
        "fields": 2,
        "rows": 2,
    }
コード例 #4
0
def test_resource_source_non_tabular():
    path = "data/text.txt"
    resource = Resource(path=path)
    assert resource.path == path
    assert resource.data is None
    assert resource.source == path
    assert resource.basepath == ""
    assert resource.inline is False
    assert resource.tabular is False
    assert resource.multipart is False
    assert resource.read_bytes() == b"text\n"
    assert resource.read_stats() == {
        "hash": "e1cbb0c3879af8347246f12c559a86b5",
        "bytes": 5,
        "rows": 0,
    }
コード例 #5
0
def test_resource_source_non_tabular_remote():
    path = BASE_URL % "data/foo.txt"
    resource = Resource(path=path)
    assert resource.path == path
    assert resource.data is None
    assert resource.source == path
    assert resource.basepath == ""
    assert resource.inline is False
    assert resource.tabular is False
    assert resource.multipart is False
    assert resource.read_bytes() == b"foo\n"
    assert resource.read_stats() == {
        "hash": "d3b07384d113edec49eaa6238ad5ff00",
        "bytes": 4,
        "rows": 0,
    }
コード例 #6
0
def test_filelike_loader_write():
    source = Resource("data/table.csv")
    target = Resource(scheme="filelike", format="csv")
    source.write(target)
    assert (target.read_bytes(
    ) == b"id,name\r\n1,english\r\n2,\xe4\xb8\xad\xe5\x9b\xbd\xe4\xba\xba\r\n")
コード例 #7
0
def test_resource_read_bytes():
    resource = Resource(path="data/text.txt")
    bytes = resource.read_bytes()
    if IS_UNIX:
        assert bytes == b"text\n"