"""
***************************************************************************
    TestData.py
    ---------------------
    Date                 : March 2013
    Copyright            : (C) 2013 by Victor Olaya
    Email                : volayaf at gmail dot com
***************************************************************************
*                                                                         *
*   This program is free software; you can redistribute it and/or modify  *
*   it under the terms of the GNU General Public License as published by  *
*   the Free Software Foundation; either version 2 of the License, or     *
*   (at your option) any later version.                                   *
*                                                                         *
***************************************************************************
"""
__author__ = "Victor Olaya"
__date__ = "March 2013"
__copyright__ = "(C) 2013, Victor Olaya"
import os.path
import tempfile
from qgis.core import QgsRasterLayer
from qgis.testing import QgisTestCase
testDataPath = os.path.join(os.path.dirname(__file__), "testdata")
def table():
    return os.path.join(testDataPath, "table.dbf")
def points():
    return os.path.join(testDataPath, "points.gml")
def invalid_geometries():
    return os.path.join(testDataPath, "invalidgeometries.gml")
def wms_layer_1_1_1(test_id: str, crs: str) -> QgsRasterLayer:
    basetestpath = tempfile.mkdtemp().replace("\\", "/")
    endpoint = basetestpath + f"/{test_id}_fake_qgis_http_endpoint"
    with open(
        QgisTestCase.sanitize_local_url(
            endpoint, "?SERVICE=WMS&REQUEST=GetCapabilities"
        ),
        "wb",
    ) as f:
        f.write(
            b"""
            
            
              OGC:WMS
              OpenStreetMap WMS
              OpenStreetMap WMS, bereitgestellt durch terrestris GmbH und Co. KG. Beschleunigt mit MapProxy (http://mapproxy.org/)
              
              (c) OpenStreetMap contributors (http://www.openstreetmap.org/copyright) (c) OpenStreetMap Data (http://openstreetmapdata.com) (c) Natural Earth Data (http://www.naturalearthdata.com) (c) GEBCO Compilation Group (2021) GEBCO 2021 Grid (doi:10.5285/c6612cbe-50b3-0cff-e053-6c86abc09f8f) (c) SRTM 450m by ViewfinderPanoramas (http://viewfinderpanoramas.org/) (c) Great Lakes Bathymetry by NGDC (http://www.ngdc.noaa.gov/mgg/greatlakes/) (c) SRTM 30m by NASA EOSDIS Land Processes Distributed Active Archive Center (LP DAAC, https://lpdaac.usgs.gov/) by using this service you agree to the privacy policy mentioned at https://www.terrestris.de/en/datenschutzerklaerung/
            
            
              
                
                  application/vnd.ogc.wms_xml
                
                
                    image/jpeg
                    image/png
                
                
                  text/plain
                  text/html
                  application/vnd.ogc.gml
                
                
                    image/jpeg
                    image/png
                    
                        
                            
                        
                    
                
              
              
                application/vnd.ogc.se_xml
                application/vnd.ogc.se_inimage
                application/vnd.ogc.se_blank
              
              
                OpenStreetMap WMS
                EPSG:3857
                EPSG:4326
                EPSG:4686
                
                
                
                
                
                  OSM-WMS
                  OpenStreetMap WMS - by terrestris
                  
                  
                  
                  
                  
                
              
            
            """
        )
    return QgsRasterLayer(
        f"crs={crs}&layers=OSM-WMS&styles&url=file://"
        + QgisTestCase.sanitize_local_url(
            endpoint, "?SERVICE=WMS&REQUEST=GetCapabilities"
        ),
        "test",
        "wms",
    )
def wms_layer_1_3_0(test_id: str, crs: str) -> QgsRasterLayer:
    basetestpath = tempfile.mkdtemp().replace("\\", "/")
    endpoint = basetestpath + f"/{test_id}_fake_qgis_http_endpoint"
    with open(
        QgisTestCase.sanitize_local_url(
            endpoint, "?SERVICE=WMS&REQUEST=GetCapabilities"
        ),
        "wb",
    ) as f:
        f.write(
            b"""
        WMS
        GeoServer Web Map Service
        A compliant implementation of WMS plus most of the SLD extension (dynamic styling). Can also generate PDF, SVG, KML, GeoRSS
        
                
                        text/xml
                
                
                        image/png
                        image/jpeg
                        image/gif
                        image/GeoTIFF
                        image/tiff
                
                
                        text/plain
                        text/html
                        text/xml
                
        
        
                XML
                INIMAGE
                BLANK
        
        
                de_basemapde_web_raster_farbe
                basemap.de Web Raster Farbe
                Der Layer enthaelt eine kombinierte Darstellung von ATKIS(c)- Landschaftsmodellen, der Hauskoordinaten und der Hausumringe,  die nach basemap.de WebSK in der jeweils aktuellen Version eine Kartensignatur haben, inklusive ihrer Beschriftung.
                
                EPSG:3857
                CRS:84
                
                        0.1059467424056892
                        20.448891294525627
                        45.2375427360256
                        56.84787345153812
                
                
                
                
                
        
"""
        )
    return QgsRasterLayer(
        f"crs={crs}&layers=de_basemapde_web_raster_farbe&styles&url=file://"
        + QgisTestCase.sanitize_local_url(
            endpoint, "?SERVICE=WMS&REQUEST=GetCapabilities"
        ),
        "test",
        "wms",
    )
def wms_layer_1_3_0_frankfurt(test_id: str, crs: str) -> QgsRasterLayer:
    basetestpath = tempfile.mkdtemp().replace("\\", "/")
    endpoint = basetestpath + f"/{test_id}_fake_qgis_http_endpoint"
    with open(
        QgisTestCase.sanitize_local_url(
            endpoint, "?SERVICE=WMS&REQUEST=GetCapabilities"
        ),
        "wb",
    ) as f:
        f.write(
            b"""
            
            
              WMS
              MapProxy-WMS Rasterbilder Bebauungsplaene rv auf Basiskarte grau
              WMS mit Rasterbilder der rechtsverbindlichen Bebauungsplaene auf grauer Basiskarte ueber MapProxy
                4000
                4000
            
            
              
                
                  text/xml
                
                
                  image/png
                  image/jpeg
                  image/gif
                  image/GeoTIFF
                  image/tiff
                
                
                  text/plain
                  text/html
                  text/xml
                
              
              
                XML
                INIMAGE
                BLANK
              
              
                bplan_stadtkarte
                Bebauungsplaene Rasterbilder auf grauer Basiskarte
                EPSG:25832
                EPSG:4326
                
                  8.471329688231897
                  8.801042621684477
                  50.01482739264088
                  50.22734893698391
                
                
                
                
              
            
            
            """
        )
    return QgsRasterLayer(
        f"crs={crs}&layers=bplan_stadtkarte&styles&url=file://"
        + QgisTestCase.sanitize_local_url(
            endpoint, "?SERVICE=WMS&REQUEST=GetCapabilities"
        ),
        "test",
        "wms",
    )