"""Tests of dataset connection sharing"""

import rasterio

from .conftest import requires_gdal2


@requires_gdal2
def test_sharing_on(capfd, path_rgb_byte_tif):
    """Datasets are shared"""
    with rasterio.Env() as env:

        # Opens a new file.
        with rasterio.open(path_rgb_byte_tif) as srcx:
            env._dump_open_datasets()
            captured = capfd.readouterr()
            assert "1 N GTiff" in captured.err
            assert "1 S GTiff" not in captured.err

            # Does not open a new file.
            with rasterio.open(path_rgb_byte_tif, sharing=True) as srcy:
                env._dump_open_datasets()
                captured = capfd.readouterr()
                assert "1 N GTiff" in captured.err
                assert "1 S GTiff" in captured.err


@requires_gdal2
def test_sharing_off(capfd, path_rgb_byte_tif):
    """Datasets are not shared"""
    with rasterio.Env() as env:

        # Opens a new file.
        with rasterio.open(path_rgb_byte_tif, sharing=False) as srcx:
            env._dump_open_datasets()
            captured = capfd.readouterr()
            assert "1 N GTiff" in captured.err
            assert "1 S GTiff" not in captured.err

            # Opens a new file.
            with rasterio.open(path_rgb_byte_tif, sharing=False) as srcy:
                env._dump_open_datasets()
                captured = capfd.readouterr()
                assert captured.err.count("1 N GTiff") == 2
                assert "1 S GTiff" not in captured.err
