コード例 #1
0
    def test_cluster_analysis(self):
        '''test_cluster_analysis'''
        if Configuration.DEBUG == True: print(".....ClusterAnalysisTestCase.test_cluster_analysis")
        arcpy.ImportToolbox(self.toolboxUnderTest, self.toolboxUnderTestAlias)

        outputClusterFeatures = os.path.join(Configuration.incidentResultGDB, "outputClusters")

        # Delete the feature class used to load if already exists
        if arcpy.Exists(outputClusterFeatures) :
            arcpy.Delete_management(outputClusterFeatures)

        runToolMessage = "Running tool (Cluster Analysis)"
        arcpy.AddMessage(runToolMessage)
        Configuration.Logger.info(runToolMessage)        
        distance = "500 Meters"

        try:
            # Tools have different parameter order in Pro vs. ArcMap
            if Configuration.Platform == Configuration.PLATFORM_PRO :
                arcpy.ClusterAnalysis_iaTools(self.inputPointsFeatures, distance, outputClusterFeatures)
            else:
                arcpy.ClusterAnalysis_iaTools(self.inputPointsFeatures, outputClusterFeatures, distance)
        except arcpy.ExecuteError:
            UnitTestUtilities.handleArcPyError()
        except Exception as e:
            UnitTestUtilities.handleGeneralError(e)

        clusterCount = int(arcpy.GetCount_management(outputClusterFeatures).getOutput(0))
        self.assertGreaterEqual(clusterCount, int(10))
 def setUp(self):
     if Configuration.DEBUG == True: print("     SubSpecificationsTestCase.setUp")
 
     UnitTestUtilities.checkArcPy()
     self.maritimeDataGDB = os.path.join(Configuration.maritimeDataPath, "Maritime Decision Aid Tools.gdb")
     self.subSpecsTable = os.path.join(self.maritimeDataGDB, "Sub_Specs")
     UnitTestUtilities.checkFilePaths([Configuration.maritimeDataPath, Configuration.maritime_DesktopToolboxPath, Configuration.maritime_ProToolboxPath])
 def test_incident_table_to_point(self, toolboxPath):
     try:
         if Configuration.DEBUG == True: print("     IncidentTableToPointTestCase.test_incident_table_to_point")
         
         arcpy.ImportToolbox(toolboxPath, "iaTools")
         
         runToolMessage = "Running tool (Incident Table To Point)"
         arcpy.AddMessage(runToolMessage)
         Configuration.Logger.info(runToolMessage)
         
         coordFormat = "MGRS"
         xField = "MGRS"
         yField = "MGRS"
         outputTable = os.path.join(Configuration.incidentScratchGDB, "outputTable")
         arcpy.IncidentTableToPoint_iaTools(self.inputTable, coordFormat, xField, yField, outputTable)
         
         result = arcpy.GetCount_management(outputTable)
         featureCount = int(result.getOutput(0))
         self.assertEqual(featureCount, int(5532))
         
     
     except arcpy.ExecuteError:
         UnitTestUtilities.handleArcPyError()
         
     except:
         UnitTestUtilities.handleGeneralError()
         
 def test_hot_spots_by_area(self, toolboxPath):
     try:
         if Configuration.DEBUG == True: print("     HotSpotsByAreaTestCase.test_hot_spots_by_area")  
         
         arcpy.ImportToolbox(toolboxPath, "iaTools")
         
         runToolMessage = "Running tool (Hot Spots By Area)"
         arcpy.AddMessage(runToolMessage)
         Configuration.Logger.info(runToolMessage)
         
         incidentFieldName = "district"
         outputWorkspace = Configuration.incidentDataPath
         
         # second parameter: inputIncidents must be a Feature Layer
         arcpy.MakeFeatureLayer_management(self.inputIncidents, "incidentsLayer") 
         arcpy.HotSpotsByArea_iaTools(self.inputAOIFeatures, "incidentsLayer", incidentFieldName, outputWorkspace)
         
         self.assertTrue(arcpy.Exists(outputWorkspace))
         
     except arcpy.ExecuteError:
         UnitTestUtilities.handleArcPyError()
         
     except:
         UnitTestUtilities.handleGeneralError()
         
         
コード例 #5
0
def main():
    ''' main test logic '''
    if Configuration.DEBUG == True:
        print("TestRunner.py - main")
    else:
        print("Debug messaging is OFF")

    # setup logger
    logName = None
    if not logFileFromBAT == None:
        logName = logFileFromBAT
        Configuration.Logger = UnitTestUtilities.initializeLogger(logFileFromBAT)
    else:
        logName = UnitTestUtilities.getLoggerName()
        Configuration.Logger = UnitTestUtilities.initializeLogger(logName)
    print("Logging results to: " + str(logName))
    UnitTestUtilities.setUpLogFileHeader()

    result = runTestSuite()
    logTestResults(result)
    print("END OF TEST =========================================\n")

    if result.wasSuccessful():
        #tests successful
        sys.exit(0)
    else:
        # test errors or failures
        sys.exit(1)

    return
コード例 #6
0
def main():
    ''' main test logic '''
    print("TestRunner.py - main")

    if Configuration.DEBUG == True:
        print("Debug messaging is ON")
        logLevel = logging.DEBUG
    else:
        print("Debug messaging is OFF")
        logLevel = logging.INFO

    # setup logger
    if not logFileFromBAT == None:
        Configuration.Logger = UnitTestUtilities.initializeLogger(logFileFromBAT, logLevel)
    else:
        Configuration.GetLogger(logLevel)

    print("Logging results to: " + str(Configuration.LoggerFile))
    UnitTestUtilities.setUpLogFileHeader()

    result = runTestSuite()

    logTestResults(result)

    return result.wasSuccessful()
    def testClearingOperationsNumberFeatures_NoOutputParam(self):
        if Configuration.DEBUG == True:print(".....ClearingOperationsNumberFeaturesTestCase.testClearingOperationsNumberFeatures_NoOutputParam")
        print("Importing toolbox...")
        arcpy.ImportToolbox(self.toolboxUnderTest)
        arcpy.env.overwriteOutput = True

        ########################################################
        # Test steps:
        # 1. Copy a known feature class in the AOI to the scratch GDB
        # 2. Add a new "Number" field (so will be blank)
        # 3. Run the NumberFeatures tool
        # 4. Verify the output
        ########################################################

        #inputs
        fieldToNumber = "NumberNewField"

        inputPoints = os.path.join(self.scratchGDB, 'numFieldsInput_NoOutput')

        # Copy the features of the original input FC into the scratch GDB
        arcpy.CopyFeatures_management(self.pointFeatures, inputPoints)   

        arcpy.AddField_management(inputPoints, fieldToNumber, "LONG")   

        # Start Test
        runToolMsg="Running tool (Number Features)"
        arcpy.AddMessage(runToolMsg)
        Configuration.Logger.info(runToolMsg)

        toolOutput = None

        try:
            #Calling the NumberFeatures_ClearingOperations Script Tool
            #No output parameter 
            toolOutput = arcpy.NumberFeatures_clrops(self.inputArea, inputPoints, \
                fieldToNumber)
        except arcpy.ExecuteError:
            UnitTestUtilities.handleArcPyError()
        except:
            UnitTestUtilities.handleGeneralError()

        # 1: Check the expected return value (output feature class)
        # TODO: this return value may change in the future, and this check may need updated
        expectedOutput = ""
        if toolOutput is None:
            returnedValue = "BAD"
        else:
            returnedValue = toolOutput.getOutput(0)
        self.assertEqual(returnedValue, expectedOutput)  

        #2: Check the Output Feature class has no rows without a null Number
        outputLayer = "Number_NoOutput"       
        arcpy.MakeFeatureLayer_management(inputPoints, outputLayer)
        query = '(' + fieldToNumber + ' is NOT NULL)'
        
        arcpy.SelectLayerByAttribute_management(outputLayer, "NEW_SELECTION", query)
        recordCount = int(arcpy.GetCount_management(outputLayer).getOutput(0))

        # Important only 90 of 120 records are in the area of interest
        self.assertEqual(recordCount, int(90))
    def setUp(self):
        if Configuration.DEBUG == True: print("     SubsetRasterWorkspaceTestCase.setUp")
        UnitTestUtilities.checkArcPy()

        # DO NOT run data download again; dependent data is needed from ImportCRUToRasterTestCase
        self.sourceWorkspace = os.path.join(Configuration.suitabilityDataPath, "CRURasters.gdb")
        self.targetWorkspace = os.path.join(Configuration.suitabilityDataPath, "SubsetRasters.gdb")
        
        UnitTestUtilities.checkFilePaths([Configuration.suitabilityDataPath, Configuration.maow_ToolboxPath, self.sourceWorkspace, self.targetWorkspace])
    def setUp(self):
        if Configuration.DEBUG == True: print("     ImportCRUToRasterTestCase.setUp")
        UnitTestUtilities.checkArcPy()

        Configuration.suitabilityDataPath = DataDownload.runDataDownload(Configuration.suitabilityPaths, "MilitaryAspectsOfWeatherTestData", Configuration.maowURL)
        self.inputCRUFolder = os.path.join(Configuration.suitabilityDataPath, "CRUdata")
        self.outputWorkspace = os.path.join(Configuration.suitabilityDataPath, "CRURasters.gdb")
       
        UnitTestUtilities.checkFilePaths([Configuration.suitabilityDataPath, Configuration.maow_ToolboxPath, self.outputWorkspace])
 def setUp(self):
     if Configuration.DEBUG == True: print(".....IncidentHotSpotsTestCase.setUp")    
     UnitTestUtilities.checkArcPy()
     Configuration.incidentDataPath = DataDownload.runDataDownload(Configuration.patternsPaths, Configuration.incidentGDBName, Configuration.incidentURL)
     if (Configuration.incidentScratchGDB == None) or (not arcpy.Exists(Configuration.incidentScratchGDB)):
         Configuration.incidentScratchGDB = UnitTestUtilities.createScratch(Configuration.incidentDataPath)
     Configuration.incidentInputGDB = os.path.join(Configuration.incidentDataPath, Configuration.incidentGDBName)
     UnitTestUtilities.checkFilePaths([Configuration.incidentDataPath, Configuration.incidentInputGDB, Configuration.patterns_ProToolboxPath, Configuration.patterns_DesktopToolboxPath])
     self.inputPointFeatures = os.path.join(Configuration.incidentInputGDB, "Incidents")
     self.inputBoundaryFeatures = os.path.join(Configuration.incidentInputGDB, "Districts")
 def setUp(self):
     if Configuration.DEBUG == True: print("     FindSubmarinesTestCase.setUp")
         
     UnitTestUtilities.checkArcPy()
     Configuration.maritimeDataPath = DataDownload.runDataDownload(Configuration.suitabilityPaths, Configuration.maritimeGDBName, Configuration.maritimeURL)
     if(Configuration.maritimeScratchGDB == None) or (not arcpy.Exists(Configuration.maritimeScratchGDB)):
         Configuration.maritimeScratchGDB = UnitTestUtilities.createScratch(Configuration.maritimeDataPath)
         
     self.useableCanyons = os.path.join(Configuration.maritimeScratchGDB, "canyonsOutput")
     UnitTestUtilities.checkFilePaths([Configuration.maritimeDataPath, Configuration.maritime_DesktopToolboxPath, Configuration.maritime_ProToolboxPath])
コード例 #12
0
def GetLogger(logLevel = logging.DEBUG) :

    global Logger

    if Logger is None:

        import UnitTestUtilities

        logName = UnitTestUtilities.getLoggerName()
        Logger = UnitTestUtilities.initializeLogger(logName, logLevel)

    return Logger
    def setUp(self):
        if Configuration.DEBUG == True: print("     FarthestOnCircleTestCase.setUp")    
        
        UnitTestUtilities.checkArcPy()
        Configuration.maritimeDataPath = DataDownload.runDataDownload(Configuration.suitabilityPaths, Configuration.maritimeGDBName, Configuration.maritimeURL)
        if(Configuration.maritimeScratchGDB == None) or (not arcpy.Exists(Configuration.maritimeScratchGDB)):
            Configuration.maritimeScratchGDB = UnitTestUtilities.createScratch(Configuration.maritimeDataPath)
            
        self.maritimeDataGDB = os.path.join(Configuration.maritimeDataPath, "Maritime Decision Aid Tools.gdb")

        self.position = os.path.join(self.maritimeDataGDB, "Vessel")
        self.hoursOfTransit = os.path.join(Configuration.maritimeScratchGDB, "hoursOutput")
        UnitTestUtilities.checkFilePaths([Configuration.maritimeDataPath, Configuration.maritime_DesktopToolboxPath, Configuration.maritime_ProToolboxPath])
 def setUp(self):
     if Configuration.DEBUG == True: print("     SubDepthRestrictionSuitabilityTestCase.setUp")
         
     UnitTestUtilities.checkArcPy()
     Configuration.maritimeDataPath = DataDownload.runDataDownload(Configuration.suitabilityPaths, Configuration.maritimeGDBName, Configuration.maritimeURL)
     if(Configuration.maritimeScratchGDB == None) or (not arcpy.Exists(Configuration.maritimeScratchGDB)):
         Configuration.maritimeScratchGDB = UnitTestUtilities.createScratch(Configuration.maritimeDataPath)
         
     self.maritimeDataGDB = os.path.join(Configuration.maritimeDataPath, "Maritime Decision Aid Tools.gdb")
     
     self.bathymetry = os.path.join(self.maritimeDataGDB, "SoCalDepthsGEBCO")
     self.subDepthOutput = os.path.join(Configuration.maritimeScratchGDB, "SubDepth")
     UnitTestUtilities.checkFilePaths([Configuration.maritimeDataPath, Configuration.maritime_DesktopToolboxPath, Configuration.maritime_ProToolboxPath])
 def test_sub_depth_restriction_suitability(self, toolboxPath):
     try:
         if Configuration.DEBUG == True: print("     SubDepthRestrictionSuitabilityTestCase.test_sub_depth_restriction_suitability")
         
         runToolMessage = "Running tool (Sub Depth Restriction Suitability)"
         arcpy.AddMessage(runToolMessage)
         Configuration.Logger.info(runToolMessage)
         
         
     except arcpy.ExecuteError:
         UnitTestUtilities.handleArcPyError()
         
     except:
         UnitTestUtilities.handleGeneralError()
 def test_sub_specifications(self, toolboxPath):
     try:
         if Configuration.DEBUG == True: print("     SubSpecificationsTestCase.test_sub_specifications")
             
         runToolMessage = "Running tool (Sub Specifications)"
         arcpy.AddMessage(runToolMessage)
         Configuration.Logger.info(runToolMessage)
         
         
     except arcpy.ExecuteError:
         UnitTestUtilities.handleArcPyError()
         
     except:
         UnitTestUtilities.handleGeneralError()
         
 def setUp(self):
     if Configuration.DEBUG == True: print("     VisibilityRangeAtSeaTestCase.setUp")
     
     UnitTestUtilities.checkArcPy()
     Configuration.maritimeDataPath = DataDownload.runDataDownload(Configuration.suitabilityPaths, Configuration.maritimeGDBName, Configuration.maritimeURL)
     if(Configuration.maritimeScratchGDB == None) or (not arcpy.Exists(Configuration.maritimeScratchGDB)):
         Configuration.maritimeScratchGDB = UnitTestUtilities.createScratch(Configuration.maritimeDataPath)
         
     self.maritimeDataGDB = os.path.join(Configuration.maritimeDataPath, "Maritime Decision Aid Tools.gdb")
     
     self.visibleRange = os.path.join(Configuration.maritimeScratchGDB, "visRangeOutput")
     self.vessel = os.path.join(Configuration.maritimeScratchGDB, "vesselOutput")
     self.shipLocation = os.path.join(self.maritimeDataGDB, "Vessel")
     
     UnitTestUtilities.checkFilePaths([Configuration.maritimeDataPath, Configuration.maritime_DesktopToolboxPath, Configuration.maritime_ProToolboxPath])
    def testClearingOperationsNumberFeatures(self):
        if Configuration.DEBUG == True:print(".....ClearingOperationsNumberFeaturesTestCase.testClearingOperationsNumberFeatures")
        print("Importing toolbox...")
        arcpy.ImportToolbox(self.toolboxUnderTest)
        arcpy.env.overwriteOutput = True

        #inputs
        fieldToNumber = "Number"
        output = os.path.join(self.scratchGDB, "numFields")

        # Start Test
        runToolMsg="Running tool (Number Features)"
        arcpy.AddMessage(runToolMsg)
        Configuration.Logger.info(runToolMsg)

        toolOutput = None

        try:
            #Calling the NumberFeatures_ClearingOperations Script Tool
            toolOutput = arcpy.NumberFeatures_clrops(self.inputArea, self.pointFeatures, fieldToNumber, output)
        except arcpy.ExecuteError:
            UnitTestUtilities.handleArcPyError()
        except:
            UnitTestUtilities.handleGeneralError()

        # 1: Check the expected return value (output feature class)
        if toolOutput is None:
            returnedValue = "BAD"
        else:
            returnedValue = toolOutput.getOutput(0)
        self.assertEqual(returnedValue, output)  

        # 2: Check the number of records
        result = arcpy.GetCount_management(output)
        count = int(result.getOutput(0))
        # print("number features: " + str(count))
        # Important only 90 of 120 records are in the area of interest
        self.assertEqual(count, 90)

        # 3: Check that the "number" field was created/updated for each row
        cursor = arcpy.SearchCursor(output)
        row = cursor.next()
        while row is not None:
            val = row.getValue(fieldToNumber)
            # Debug: print("Field number first row: " + str(val) + " should not be null")
            self.assertIsNotNone(val)
            row = cursor.next()
 def setUp(self):
     if Configuration.DEBUG == True: print(".....CountIncidentsByLOCTestCase.setUp")  
     UnitTestUtilities.checkArcPy()
     
     Configuration.incidentDataPath = DataDownload.runDataDownload(Configuration.patternsPaths, Configuration.incidentGDBName, Configuration.incidentURL)
     if (Configuration.incidentScratchGDB == None) or (not arcpy.Exists(Configuration.incidentScratchGDB)):
         Configuration.incidentScratchGDB = UnitTestUtilities.createScratch(Configuration.incidentDataPath)
     Configuration.incidentInputGDB = os.path.join(Configuration.incidentDataPath, Configuration.incidentGDBName)
     Configuration.incidentResultGDB = os.path.join(Configuration.incidentDataPath, Configuration.incidentResultGDBName)
     
     UnitTestUtilities.checkFilePaths([Configuration.incidentDataPath, Configuration.incidentInputGDB, Configuration.patterns_ProToolboxPath, Configuration.patterns_DesktopToolboxPath])
  
     # set up inputs    
     self.inputPointsFeatures = os.path.join(Configuration.incidentInputGDB, "Incidents")
     self.inputLinesFeatures = os.path.join(Configuration.incidentInputGDB, "Roads")
     self.inputAOIFeatures = os.path.join(Configuration.incidentInputGDB, "Districts")
     self.resultCompareFeatures0001 = os.path.join(Configuration.incidentResultGDB, "resultsCountIncidentsByLOC_0001")
    def test_local_peaks(self):
        try:
            arcpy.AddMessage("Testing Find Local Peaks (unit).")
            if arcpy.CheckExtension("Spatial") == "Available":
                arcpy.CheckOutExtension("Spatial")
            else:
                raise Exception("LicenseError")
                
            print("Importing Visibility and Range Toolbox...")
            arcpy.ImportToolbox(Configuration.visandRangeToolbox, "VandR")
            arcpy.env.overwriteOutput = True

            inputFeatureCount = int(arcpy.GetCount_management(self.inputPolygonFC).getOutput(0)) 
            print("Input FeatureClass: " + str(self.inputPolygonFC))
            print("Input Feature Count: " +  str(inputFeatureCount))
            
            self.assertTrue(inputFeatureCount > 0)
            
            # if (inputFeatureCount < 1):
                # print("Invalid Input Feature Count: " +  str(inputFeatureCount))
           
            numberOfPeaks = 3
           
            ########################################################
            # Execute the Model under test:   
            arcpy.FindLocalPeaks_VandR(self.inputPolygonFC, numberOfPeaks, self.inputSurface, self.outputPointsFC)
            ########################################################
    
            # Verify the results    
            outputFeatureCount = int(arcpy.GetCount_management(self.outputPointsFC).getOutput(0)) 
            print("Output FeatureClass: " + str(self.outputPointsFC))
            print("Output Feature Count: " +  str(outputFeatureCount))
            self.assertEqual(outputFeatureCount, 3)       
            
            # if (outputPointsFC < 3):
                # print("Invalid Output Feature Count: " +  str(outputFeatureCount))
                # raise Exception("Test Failed")
                
        except arcpy.ExecuteError:
            UnitTestUtilities.handleArcPyError()
            
        except:
            UnitTestUtilities.handleGeneralError()
        
        finally:
            arcpy.CheckInExtension("Spatial")
コード例 #21
0
    def setUp(self):
        if Configuration.DEBUG == True: print(".....HotSpotsByAreaTestCase.setUp")

        ''' Initialization needed if running Test Case standalone '''
        Configuration.GetLogger()
        Configuration.GetPlatform()
        ''' End standalone initialization '''

        self.toolboxUnderTest = Configuration.incidentToolboxPath + Configuration.GetToolboxSuffix()

        UnitTestUtilities.checkArcPy()
        
        DataDownload.runDataDownload(Configuration.incidentAnalysisDataPath, Configuration.incidentInputGDB, Configuration.incidentURL)
        if (self.incidentScratchGDB == None) or (not arcpy.Exists(self.incidentScratchGDB)):
            self.incidentScratchGDB = UnitTestUtilities.createScratch(Configuration.incidentAnalysisDataPath)
        
        self.inputAOIFeatures = os.path.join(Configuration.incidentInputGDB, "Districts")
        self.inputIncidents = os.path.join(Configuration.incidentInputGDB, "Incidents")

        UnitTestUtilities.checkFilePaths([Configuration.incidentAnalysisDataPath])

        UnitTestUtilities.checkGeoObjects([Configuration.incidentInputGDB, \
                                           self.incidentScratchGDB, \
                                           self.toolboxUnderTest, \
                                           self.inputAOIFeatures, \
                                           self.inputIncidents])
    def setUp(self):
        if Configuration.DEBUG == True: print("         DistanceToAssetsTestCase.setUp")

        ''' Initialization needed if running Test Case standalone '''
        Configuration.GetLogger()
        Configuration.GetPlatform()
        ''' End standalone initialization '''
        self.toolboxUnderTest = Configuration.distancetoAssetsToolboxPath + \
            Configuration.GetToolboxSuffix()

        self.suffix = Configuration.GetToolboxSuffix()
        UnitTestUtilities.checkArcPy()
        DataDownload.runDataDownload(Configuration.distanceToAssetsDataPath, \
           Configuration.distanceToAssetsInputGDB, Configuration.distanceToAssetsURL)

        self.inputLocator = os.path.join(Configuration.distanceToAssetsDataPath, r"DistanceToAssetsTestData\Sample Locations\arcgisonline\World.GeocodeServer")


        if (self.scratchGDB == None) or (not arcpy.Exists(self.scratchGDB)):
            self.scratchGDB = UnitTestUtilities.createScratch(Configuration.distanceToAssetsDataPath)


        UnitTestUtilities.checkFilePaths([Configuration.distanceToAssetsDataPath])

        UnitTestUtilities.checkGeoObjects([Configuration.distanceToAssetsInputGDB, self.toolboxUnderTest, self.scratchGDB, self.inputLocator])
    def setUp(self):
        if Configuration.DEBUG is True: print("         CreateReferenceSystemGRGFromAreaTestCase.setUp")

        ''' Initialization needed if running Test Case standalone '''
        Configuration.GetLogger()
        Configuration.GetPlatform()
        ''' End standalone initialization '''
        self.toolboxUnderTest = Configuration.grgToolboxPath

        UnitTestUtilities.checkArcPy()
        DataDownload.runDataDownload(Configuration.grgPath,
                                     Configuration.grgInputGDB,
                                     Configuration.grgURL)

        if (self.scratchGDB is None) or (not arcpy.Exists(self.scratchGDB)):
            self.scratchGDB = UnitTestUtilities.createScratch(Configuration.grgPath)

        # set up inputs
        self.inputArea = os.path.join(Configuration.grgInputGDB, r"inputAO")
        self.inputArea10m = os.path.join(Configuration.grgInputGDB, r"inputAO10m")
        self.ref_grid = "MGRS"
        self.large_grid_handling = "ALLOW_LARGE_GRIDS"
        self.ignore_options = ["IGNORE_M",
                               "IGNORE_Z",
                               "IGNORE_POINTID",
                               "IGNORE_EXTENSION_PROPERTIES",
                               "IGNORE_SUBTYPES",
                               "IGNORE_RELATIONSHIPCLASSES",
                               "IGNORE_REPRESENTATIONCLASSES"]
        UnitTestUtilities.checkFilePaths([Configuration.grgPath])
        UnitTestUtilities.checkGeoObjects([Configuration.grgInputGDB,
                                           self.toolboxUnderTest,
                                           self.scratchGDB,
                                           self.inputArea])
    def setUp(self):
        ''' set-up code '''
        if Configuration.DEBUG == True: print("         HLZTouchdownPoints.setUp")
        UnitTestUtilities.checkArcPy()
        self.testDataFolderPath = DataDownload.createDataFolder(Configuration.capabilityPath)
        print("Created Capability test data folder.")
        UnitTestUtilities.checkFilePaths([self.testDataFolderPath,
                                          self.tbxProFolderPath,
                                          self.tbxDesktopFolderPath])

        self.testDataGeodatabase = os.path.join(self.testDataFolderPath, r"test_hlz_tools.gdb")

        # Check the test inputs (do they exist? or not?)
        if (self.scratchGDB == None) or (not arcpy.Exists(self.scratchGDB)):
            self.scratchGDB = UnitTestUtilities.createScratch(self.testDataFolderPath)

        # Setup the test inputs
        self.inputAirframeTable = os.path.join(self.testDataGeodatabase, r"Aircraft_Specifications")
        self.inputSuitableAreas = os.path.join(self.testDataGeodatabase, r"HLZSelectionArea")
        self.inputSlope = os.path.join(self.testDataGeodatabase, r"SRTMPctSlope")
        self.outputGeodatabase = os.path.join(self.scratchGDB)
        self.outputCenterpoints = os.path.join(self.outputGeodatabase, r"centerPoints")
        self.outputCircles = os.path.join(self.outputGeodatabase, r"tdCircles")

        UnitTestUtilities.checkGeoObjects([self.testDataGeodatabase,
                                           self.outputGeodatabase,
                                           self.inputAirframeTable,
                                           self.inputSuitableAreas,
                                           self.inputSlope])
        return
    def setUp(self):
        if Configuration.DEBUG == True: print("         SunPositionAndHillshadeTestCase.setUp")

        ''' Initialization needed if running Test Case standalone '''
        Configuration.GetLogger()
        Configuration.GetPlatform()
        ''' End standalone initialization '''

        self.toolboxUnderTest = Configuration.sunPositionAnalysisToolboxPath + \
            Configuration.GetToolboxSuffix()

        UnitTestUtilities.checkArcPy()

        DataDownload.runDataDownload(Configuration.sunPositionAnalysisDataPath, \
           Configuration.sunPositionInputGDB, Configuration.sunPositionAnalysisURL)

        if (self.scratchGDB == None) or (not arcpy.Exists(self.scratchGDB)):
            self.scratchGDB = UnitTestUtilities.createScratch(Configuration.sunPositionAnalysisDataPath)

        # set up inputs
        self.inputArea = os.path.join(Configuration.sunPositionInputGDB, r"inputArea")
        self.inputSurface = os.path.join(Configuration.sunPositionInputGDB, r"Jbad_SRTM_USGS_EROS")
        self.compareResults = os.path.join(Configuration.sunPositionInputGDB, r"compareResults_2017_8_10_16_30_00")

        UnitTestUtilities.checkFilePaths([Configuration.sunPositionAnalysisDataPath])

        UnitTestUtilities.checkGeoObjects([Configuration.sunPositionInputGDB, \
            self.toolboxUnderTest, self.scratchGDB, \
            self.inputArea, self.inputSurface, \
            self.compareResults])
    def setUp(self):
        if Configuration.DEBUG == True: print("         DistanceToAssetsTestCase.setUp")

        ''' Initialization needed if running Test Case standalone '''
        Configuration.GetLogger()
        Configuration.GetPlatform()
        ''' End standalone initialization '''
        self.toolboxUnderTest = Configuration.distancetoAssetsToolboxPath + \
            Configuration.GetToolboxSuffix()

        UnitTestUtilities.checkArcPy()
        DataDownload.runDataDownload(Configuration.distanceToAssetsDataPath, \
           Configuration.distanceToAssetsInputGDB, Configuration.distanceToAssetsURL)

        self.suffix = Configuration.GetToolboxSuffix()

        #self.inputND = os.path.join(Configuration.distanceToAssetsInputNDGDB, "Transportation/Streets_ND")
        self.inputND=r"\\redarchive2\disl\Development\Commercial\TestData\DistanceToAssets\SanFrancisco.gdb\Transportation\Streets_ND"
        self.inputAssetsPro = os.path.join(Configuration.distanceToAssetsInputGDB, "AssetsGeocoded_pro_SF")
        self.inputAssets = os.path.join(Configuration.distanceToAssetsInputGDB, "AssetsGeocoded_SF")
        self.inputBasesPro = os.path.join(Configuration.distanceToAssetsInputGDB, "BasesGeocoded_pro_SF")
        self.inputBases = os.path.join(Configuration.distanceToAssetsInputGDB, "BasesGeocoded_SF")

        if (self.scratchGDB == None) or (not arcpy.Exists(self.scratchGDB)):
            self.scratchGDB = UnitTestUtilities.createScratch(Configuration.distanceToAssetsDataPath)


        UnitTestUtilities.checkFilePaths([Configuration.distanceToAssetsDataPath])

        UnitTestUtilities.checkGeoObjects([Configuration.distanceToAssetsInputGDB, self.toolboxUnderTest, self.scratchGDB, self.inputAssets, self.inputBases, self.inputND])
コード例 #27
0
    def test_hot_spots_by_area(self):
        '''test_hot_spots_by_area'''
        if Configuration.DEBUG == True: print(".....HotSpotsByAreaTestCase.test_hot_spots_by_area")

        arcpy.env.overwriteOutput = True

        arcpy.ImportToolbox(self.toolboxUnderTest, self.toolboxUnderTestAlias)

        runToolMessage = "Running tool (Hot Spots By Area)"
        arcpy.AddMessage(runToolMessage)
        Configuration.Logger.info(runToolMessage)
        incidentFieldName = "district"
        outputWorkspace = self.incidentScratchGDB

        results = None

        try:

            # second parameter: inputIncidents must be a Feature Layer
            layerName = "incidentsLayer"
            arcpy.MakeFeatureLayer_management(self.inputIncidents, layerName)

            # Tools have slightly different names in Pro vs. ArcMap ("By" vs. "by")
            if Configuration.Platform == Configuration.PLATFORM_PRO :
                results = arcpy.HotSpotsByArea_iaTools(self.inputAOIFeatures, layerName, \
                    incidentFieldName, outputWorkspace)
            else: 
                # WORKAROUND:
                # ArcMap version of tool ignores outputWorkspace parameter
                arcpy.env.scratchWorkspace = outputWorkspace
                arcpy.env.workspace = outputWorkspace
                # End WORKAROUNG 

                results = arcpy.HotSpotsbyArea_iaTools(self.inputAOIFeatures, layerName, \
                    incidentFieldName, outputWorkspace)

        except arcpy.ExecuteError:
            UnitTestUtilities.handleArcPyError()
        except Exception as e:
            UnitTestUtilities.handleGeneralError(e)

        self.assertIsNotNone(results)
        outputFeatureClasses = results[0].split(';')
        for outputFeatureClass in outputFeatureClasses:
            self.assertTrue(arcpy.Exists(outputFeatureClass))
    def test_import_wmo_station_data(self):
        try:  
            if Configuration.DEBUG == True: print("     ImportWMOStationDataTestCase.test_import_wmo_station_data")
            arcpy.AddMessage("Testing Import WMO Station Data (Desktop)")    
        
            arcpy.ImportToolbox(Configuration.maow_ToolboxPath, "maow")
            runToolMessage = "Running tool (Import WMO Station Data)"
            arcpy.AddMessage(runToolMessage)
            Configuration.Logger.info(runToolMessage)
            
            arcpy.ImportWMOStationData_maow(self.WMOGDB, self.outputFCName, self.WMOFolder, self.StationDataInputFC) 

            wmoStationCount = int(arcpy.GetCount_management(self.StationDataOutputFC).getOutput(0))
            self.assertEqual(wmoStationCount, int(252))
            
        except arcpy.ExecuteError:
            UnitTestUtilities.handleArcPyError()
            
        except:
            UnitTestUtilities.handleGeneralError()
    def setUp(self):
        ''' setup for tests'''
        if Configuration.DEBUG == True: print("         RangeRingsUtilsTestCase.setUp")

        UnitTestUtilities.checkArcPy()
        self.proToolboxPath = os.path.join(Configuration.vis_ToolboxesPath,
                                           "Visibility and Range Tools.tbx")
        self.desktopToolboxPath = os.path.join(Configuration.vis_ToolboxesPath,
                                               "Visibility and Range Tools_10.4.tbx")
        self.srWebMerc = arcpy.SpatialReference(3857) #WGS_1984_Web_Mercator
        self.srWGS84 = arcpy.SpatialReference(4326) #GCS_WGS_1984
        self.srWAZED = arcpy.SpatialReference(54032) #World_Azimuthal_Equidistant
        self.deleteme = []

        self.DataGDB = None
        self.rrDataPath = os.path.join(Configuration.visibilityPaths, 'data')
        if (self.DataGDB == None) or (not arcpy.Exists(self.DataGDB)):
            self.DataGDB = UnitTestUtilities.createScratch(self.rrDataPath)

        UnitTestUtilities.checkFilePaths([self.proToolboxPath,
                                          self.desktopToolboxPath,
                                          Configuration.visibilityPaths,
                                          self.rrDataPath,
                                          self.DataGDB])


        #create a temp point feature class
        ptCoords = [[0.0, 0.0], [10.0, 10.0], [3.0, 3.0], [5.5, 1.5]]
        tempfcPath = os.path.join("in_memory", "tempfc")
        if arcpy.Exists(tempfcPath):
            arcpy.Delete_management(tempfcPath)
        self.pointGeographic = arcpy.CreateFeatureclass_management(os.path.dirname(tempfcPath),
                                                                   os.path.basename(tempfcPath),
                                                                   "POINT", "#", "DISABLED",
                                                                   "DISABLED", self.srWGS84)[0]
        with arcpy.da.InsertCursor(self.pointGeographic, ["SHAPE@XY"]) as cursor:
            for (x, y) in ptCoords:
                cursor.insertRow([(x, y)])
        del cursor
        self.deleteme.append(self.pointGeographic)
        return
コード例 #30
0
    def test_incident_hot_spots(self):
        '''test_incident_hot_spots'''
        if Configuration.DEBUG == True: print(".....IncidentHotSpotsTestCase.test_incident_hot_spots")

        arcpy.ImportToolbox(self.toolboxUnderTest, self.toolboxUnderTestAlias)

        runToolMessage = "Running tool (Incident Hot Spots)"
        arcpy.AddMessage(runToolMessage)
        Configuration.Logger.info(runToolMessage)

        outputFeatures = os.path.join(Configuration.incidentResultGDB, "outputHotSpots")

        # Delete the feature class used to load if already exists
        if arcpy.Exists(outputFeatures) :
            arcpy.Delete_management(outputFeatures)

        try:
            if Configuration.Platform == Configuration.PLATFORM_PRO :

                # Pro requires these to be layers
                incidentsLayer = arcpy.MakeFeatureLayer_management(self.inputPointFeatures)
                boundariesLayer = arcpy.MakeFeatureLayer_management(self.inputBoundaryFeatures)

                arcpy.IncidentHotSpots_iaTools(incidentsLayer, boundariesLayer, outputFeatures)
            else:
                # Note: ArcMap has different parameter order
                arcpy.IncidentHotSpots_iaTools(self.inputPointFeatures, outputFeatures, \
                    self.inputBoundaryFeatures)

        except arcpy.ExecuteError:
            UnitTestUtilities.handleArcPyError()
        except Exception as e:
            UnitTestUtilities.handleGeneralError(e)

        result = arcpy.GetCount_management(outputFeatures)
        featureCount = int(result.getOutput(0))

        print("Number of features in output: " + str(featureCount))

        # Note: Pro and ArcMap returning different counts (4200 vs. 7400)
        self.assertGreater(featureCount, int(4000))
コード例 #31
0
    def setUp(self):
        if Configuration.DEBUG == True:
            print("         CalculateRepRuleTestCase.setUp")
        ''' Initialization needed if running Test Case standalone '''
        Configuration.GetLogger()
        Configuration.GetPlatform()
        ''' End standalone initialization '''

        self.toolboxUnderTest = Configuration.militaryFeaturesToolboxPath + \
            Configuration.GetToolboxSuffix()

        UnitTestUtilities.checkArcPy()

        DataDownload.runDataDownload(Configuration.militaryFeaturesDataPath, \
           Configuration.militaryFeaturesInputGDB, Configuration.militaryFeaturesURL)

        self.inputPointsFC = os.path.join(Configuration.militaryFeaturesInputGDB, \
                                          r"FriendlyOperations/FriendlyUnits")

        UnitTestUtilities.checkFilePaths(
            [Configuration.militaryFeaturesDataPath])

        UnitTestUtilities.checkGeoObjects([self.toolboxUnderTest, \
            self.inputPointsFC])
コード例 #32
0
    def test_sun_position_analysis(self):
        if Configuration.DEBUG == True:
            print(
                ".....SunPositionAndHillshadeTestCase.test_sun_position_analysis"
            )

        print("Importing toolbox... ")
        arcpy.ImportToolbox(self.toolboxUnderTest)

        arcpy.env.overwriteOutput = True

        # Inputs
        print("Setting up inputs... ")
        # '''
        # Tool comparison is based on static dataset in Web Mercator
        # over Afghanistan, for 8/10/2017 at 16:30
        # '''
        dtCompare = datetime.datetime(2017, 8, 10, 16, 30, 30)
        print("Set date...")
        utcAfghanistan = r'(UTC+4:30) Afghanistan'
        print("Set UTCAfg...")

        outHillshade = os.path.join(self.scratchGDB, "outputHS")
        print("Set output hillshade...")

        # Testing
        runToolMsg = "Running tool (Sun Position and Hillshade)"
        arcpy.AddMessage(runToolMsg)
        Configuration.Logger.info(runToolMsg)

        try:
            arcpy.SunPositionAnalysis_sunpos(self.inputArea, self.inputSurface, \
                dtCompare, utcAfghanistan, outHillshade)
        except arcpy.ExecuteError:
            UnitTestUtilities.handleArcPyError()
        except:
            UnitTestUtilities.handleGeneralError()

        compareMessage = "Comparing expected values with tool results from " + str(
            dtCompare) + " in " + str(utcAfghanistan)
        Configuration.Logger.info(compareMessage)
        compareResults = self.compareResults

        # Diff requires Spatial Analyst extension
        requiredExtension = "Spatial"
        if arcpy.CheckExtension(requiredExtension) == "Available":
            arcpy.CheckOutExtension(requiredExtension)
        else:
            raise Exception(requiredExtension + " license is not available.")

        # Results Testing Method:
        # Run a diff on the result surface above and a known good previous run
        # There should be no differences between the raster datasets
        # No differences -> max diff = min diff = 0, unique values = 1
        diff = Minus(Raster(outHillshade), Raster(compareResults))
        diff.save(os.path.join(self.scratchGDB, "diff"))
        arcpy.CalculateStatistics_management(diff)
        rasMinimum = abs(
            float(
                arcpy.GetRasterProperties_management(diff,
                                                     "MINIMUM").getOutput(0)))
        rasMaximum = abs(
            float(
                arcpy.GetRasterProperties_management(diff,
                                                     "MAXIMUM").getOutput(0)))
        rasMean = float(
            arcpy.GetRasterProperties_management(diff, "MEAN").getOutput(0))
        rasSTD = float(
            arcpy.GetRasterProperties_management(diff, "STD").getOutput(0))
        rasUnique = int(
            arcpy.GetRasterProperties_management(
                diff, "UNIQUEVALUECOUNT").getOutput(0))

        arcpy.CheckInExtension(requiredExtension)

        tolerance = 3  # allow this much variation in the outputs (ArcMap and Pro vary a tiny bit)
        if (rasMaximum <= float(tolerance)) and (
                rasMinimum <= float(tolerance)) and (rasUnique <=
                                                     int(tolerance)):
            Configuration.Logger.info(
                "No differences between tool output and expected results.")
        else:
            msg = "ERROR IN TOOL RESULTS: \n"\
                + "Difference between tool output and expected results found:\n"\
                + "Difference Minimum: " + str(rasMinimum) + "\n"\
                + "Difference Maximum: " + str(rasMaximum) + "\n"\
                + "Difference Mean: " + str(rasMean) + "\n"\
                + "Difference Std. Deviation: " + str(rasSTD) + "\n"\
                + "Difference Number of Unique Values: " + str(rasUnique) + "\n"
            Configuration.Logger.error(msg)

        self.assertLessEqual(rasMaximum, float(tolerance))
        self.assertLessEqual(rasMinimum, float(tolerance))
        self.assertLessEqual(rasUnique, int(tolerance))
 def tearDown(self):
     ''' clean up after tests'''
     if Configuration.DEBUG == True:
         print("         ERGByChemical.tearDown")
     UnitTestUtilities.deleteScratch(self.scratchGDB)
     return
 def tearDown(self):
     if Configuration.DEBUG == True:
         print(".....IncidentDensityTestCase.tearDown")
     UnitTestUtilities.deleteScratch(Configuration.incidentScratchGDB)
コード例 #35
0
 def tearDown(self):
     if Configuration.DEBUG == True:
         print("         DistanceToAssets.tearDown")
     UnitTestUtilities.deleteScratch(self.scratchGDB)
コード例 #36
0
 def tearDown(self):
     if Configuration.DEBUG == True:
         print("         ClearingOperationsTestCase.tearDown")
     UnitTestUtilities.deleteScratch(self.scratchGDB)
コード例 #37
0
 def tearDownClass(cls):
     Configuration.Logger.debug(
         "     GRGCreateGRGFromAreaTestCase.tearDownClass")
     UnitTestUtilities.deleteScratch(Configuration.militaryScratchGDB)
コード例 #38
0
 def tearDown(self):
     if Configuration.DEBUG == True:
         print(".....FindPercentChangeTestCase.tearDown")
     UnitTestUtilities.deleteScratch(Configuration.incidentScratchGDB)
コード例 #39
0
 def tearDown(self):
     if Configuration.DEBUG == True:
         print("     VisibilityRangeAtSeaTestCase.tearDown")
     UnitTestUtilities.deleteScratch(Configuration.maritimeScratchGDB)
コード例 #40
0
 def tearDown(self):
     if Configuration.DEBUG == True:
         print("     SubDepthRestrictionSuitabilityTestCase.tearDown")
     UnitTestUtilities.deleteScratch(Configuration.maritimeScratchGDB)
 def tearDown(self):
     if Configuration.DEBUG == True:
         print(".....AddRLOSObserverFieldsTestCase.tearDown")
     UnitTestUtilities.deleteScratch(Configuration.militaryScratchGDB)
     return
コード例 #42
0
    def test_toolboxMain(self):

        arcpy.ImportToolbox(Configuration.toolboxUnderTest)

        if arcpy.CheckExtension("3D") == "Available":
            arcpy.CheckOutExtension("3D")
        else:
            raise Exception("3D license is not available.")

        inputObserverPoints = os.path.join(Configuration.militaryInputDataGDB,
                                           "RLOS_Observers")
        elevationRaster = os.path.join(Configuration.militaryInputDataGDB,
                                       "ElevationUTM_Zone10")
        outerRadiusInput = '1000'
        leftAzimuthInput = '90'
        rightAzimuthInput = '180'
        observerOffsetInput = '20'
        innerRadiusInput = '500'
        viewshed = r'in_memory\viewshed'
        sectorWedge = r'in_memory\wedge'
        fullWedge = r'in_memory\fullwedge'

        toolOutput = None

        try:
            toolOutput = arcpy.RadialLineOfSightAndRange_mt(inputObserverPoints, elevationRaster, \
                outerRadiusInput, leftAzimuthInput, rightAzimuthInput, observerOffsetInput, \
                innerRadiusInput, viewshed, sectorWedge, fullWedge)
        except:
            UnitTestUtilities.handleArcPyError()

        # 1: Check the expected return value
        self.assertIsNotNone(toolOutput, "No output returned from tool")
        viewshedOut = toolOutput.getOutput(0)
        sectorWedgeOut = toolOutput.getOutput(1)
        fullWedgeOut = toolOutput.getOutput(2)

        self.assertEqual(viewshed, viewshedOut,
                         "Unexpected return value from tool")
        self.assertEqual(sectorWedge, sectorWedgeOut,
                         "Unexpected return value from tool")
        self.assertEqual(fullWedge, fullWedgeOut,
                         "Unexpected return value from tool")

        # 2: Verify some output was created
        viewshedFeaturesCount = int(
            arcpy.GetCount_management(viewshedOut).getOutput(0))
        sectorWedgeFeaturesCount = int(
            arcpy.GetCount_management(sectorWedgeOut).getOutput(0))
        fullWedgeFeaturesCount = int(
            arcpy.GetCount_management(fullWedgeOut).getOutput(0))

        self.assertGreater(
            viewshedFeaturesCount, 0,
            "No output features created for " + str(viewshedFeaturesCount))
        self.assertGreater(
            sectorWedgeFeaturesCount, 0,
            "No output features created for " + str(sectorWedgeFeaturesCount))
        self.assertGreater(
            fullWedgeFeaturesCount, 0,
            "No output features created for " + str(fullWedgeFeaturesCount))
 def tearDown(self):
     if Configuration.DEBUG == True:
         print(".....LowestPointsTestCase.tearDown")
     arcpy.CheckInExtension("Spatial")
     UnitTestUtilities.deleteScratch(Configuration.militaryScratchGDB)
    def test_sun_position_analysis(self, toolboxPath):
        try:
            print("Importing toolbox... ")
            arcpy.ImportToolbox(toolboxPath)
            arcpy.env.overwriteOutput = True

            # Inputs
            print("Setting up inputs... ")
            # '''
            # Tool comparison is based on static dataset in Web Mercator
            # over Afghanistan, for 7/30/2015 at 14:28:36.
            # '''
            dtCompare = datetime.datetime(2015, 7, 30, 14, 28, 36)
            print("Set date...")
            utcAfghanistan = r'(UTC+4:30) Afghanistan'
            print("Set UTCAfg...")
            # outHillshade = os.path.join(Configuration.vis_ScratchPath, "outputHS")
            outHillshade = os.path.join(self.scratchGDB, "outputHS")
            print("Set output hillshade...")

            # Testing
            runToolMsg = "Running tool (Sun Position and Hillshade)"
            arcpy.AddMessage(runToolMsg)
            Configuration.Logger.info(runToolMsg)
            arcpy.SunPositionAnalysis_sunpos(self.inputArea, self.inputSurface,
                                             dtCompare, utcAfghanistan,
                                             outHillshade)

            compareMessage = "Comparing expected values with tool results from " + str(
                dtCompare) + " in " + str(utcAfghanistan)
            Configuration.Logger.info(compareMessage)
            compareResults = self.compareResults

            arcpy.CheckOutExtension("Spatial")
            diff = Minus(Raster(outHillshade), Raster(compareResults))
            diff.save(os.path.join(self.scratchGDB, "diff"))
            arcpy.CalculateStatistics_management(diff)
            rasMinimum = float(
                arcpy.GetRasterProperties_management(diff,
                                                     "MINIMUM").getOutput(0))
            rasMaximum = float(
                arcpy.GetRasterProperties_management(diff,
                                                     "MAXIMUM").getOutput(0))
            rasMean = float(
                arcpy.GetRasterProperties_management(diff,
                                                     "MEAN").getOutput(0))
            rasSTD = float(
                arcpy.GetRasterProperties_management(diff, "STD").getOutput(0))
            rasUnique = int(
                arcpy.GetRasterProperties_management(
                    diff, "UNIQUEVALUECOUNT").getOutput(0))

            self.assertEqual(rasMaximum, float(0))
            self.assertEqual(rasMinimum, float(0))
            self.assertEqual(rasUnique, int(1))

            # if (rasMaximum == float(0)) and (rasMinimum == float(0)) and (rasUnique == int(1)):
            # print("No differences between tool output and expected results.")
            # print("Test Passed")
            # else:
            # msg = "ERROR IN TOOL RESULTS: \n"\
            # + "Difference between tool output and expected results found:\n"\
            # + "Difference Minimum: " + str(rasMinimum) + "\n"\
            # + "Difference Maximum: " + str(rasMaximum) + "\n"\
            # + "Difference Mean: " + str(rasMean) + "\n"\
            # + "Difference Std. Deviation: " + str(rasSTD) + "\n"\
            # + "Difference Number of Unique Values: " + str(rasUnique) + "\n"
            # raise ValueDifferenceError(msg)

        except arcpy.ExecuteError:
            UnitTestUtilities.handleArcPyError()

        except:
            UnitTestUtilities.handleGeneralError()

        finally:
            arcpy.CheckInExtension("Spatial")
コード例 #45
0
 def tearDown(self):
     ''' clean up after tests'''
     if Configuration.DEBUG:
         print(".....ERGScript.tearDown")
     UnitTestUtilities.deleteScratch(self.scratchGDB)
     return
コード例 #46
0
 def tearDown(self):
     Configuration.Logger.debug(".....HighestPointsTestCase.tearDown")
     arcpy.CheckInExtension("Spatial");
     UnitTestUtilities.deleteScratch(Configuration.militaryScratchGDB)
    def testGRGPointTarget(self):
        Configuration.Logger.debug(".....GRGCreateGRGFromPointTestCase.testGRGPointTarget")

        #inputs
        rows = 5
        cols = 10
        cellWidth = 100
        cellHeight = 100
        cellUnits = "Meters"
        labelStart = "Lower-Left"
        labelStyle = "Alpha-Numeric"
        labelSeparator = "-" # TRICKY: Only used for Alpha-Alpha but required parameter?
        gridRotationAngle = 0 # No Rotation

        output = os.path.join(Configuration.militaryScratchGDB, "ptTarget")

        #Testing
        runToolMsg="Running tool (Point Target)"
        arcpy.AddMessage(runToolMsg)
        Configuration.Logger.info(runToolMsg)

        toolOutput = None

        try:
            # Calling the PointTargetGRG Script Tool
            toolOutput = arcpy.CreateGRGFromPoint_mt(self.pointTarget, \
                rows, cols, \
                cellWidth, cellHeight, cellUnits, \
                labelStart, labelStyle, labelSeparator, gridRotationAngle, \
                output)
        except arcpy.ExecuteError:
            UnitTestUtilities.handleArcPyError()
        except:
            UnitTestUtilities.handleGeneralError()

        # 1: Check the expected return value and that output exists
        self.assertIsNotNone(toolOutput, "No output returned from tool")
        outputOut = toolOutput.getOutput(0)
        self.assertEqual(output, outputOut, "Unexpected return value from tool") 
        self.assertTrue(arcpy.Exists(outputOut), "Output does not exist")

        # 2: Check the number of features created 
        result = arcpy.GetCount_management(output)
        count = int(result.getOutput(0))
        expectedCount = rows * cols
        self.assertEqual(count, expectedCount, "Unexpected number of output feature created")

        # 3: Checks 3 and 4 - check size of feature shape and grid zone label
        # for each feature matches the expected values
        expectedPerimeter = (cellWidth * 2.0) + (cellHeight * 2.0)
        tolerance = 0.001
        field_names = ["Grid", "Shape_Length"]
        with arcpy.da.SearchCursor(outputOut, field_names) as cursor:
            for row in cursor:
                gridDesignator = row[0]
                perimeterLength = row[1]
                perimeterDelta = abs(expectedPerimeter - perimeterLength)
                # Check 3 - Grid Perimeter length matched expected (within tolerance)
                self.assertLessEqual(perimeterDelta, tolerance)
                # Check 4 - Grid Zone Designator matches expected format
                regexExpression = '[A-Z][0-9]+$' # [LETTER A-Z][One or more digits]

                # assertRegex (Python 3) vs assertRegexpMatches (Python 2.7)
                if sys.version_info >= (3,2):
                    self.assertRegex(gridDesignator, regexExpression)
                else:
                    self.assertRegexpMatches(gridDesignator, regexExpression)
コード例 #48
0
 def tearDown(self):
     ''' clean up after tests'''
     UnitTestUtilities.deleteScratch(self.scratchGDB)
コード例 #49
0
 def tearDown(self):
     ''' clean up after tests'''
     if Configuration.DEBUG == True:
         print(".....HLZTouchdownPoints.tearDown")
     UnitTestUtilities.deleteScratch(self.scratchGDB)
     return
コード例 #50
0
 def tearDown(self):
     if Configuration.DEBUG == True:
         print(".....HotSpotsByAreaTestCase.tearDown")
     UnitTestUtilities.deleteScratch(Configuration.incidentScratchGDB)
コード例 #51
0
    def testGRGAreaGRG(self):

        Configuration.Logger.debug(
            ".....GRGCreateGRGFromAreaTestCase.testGRGAreaGRG")

        #inputs
        cellWidth = randint(100, 500)
        cellHeight = randint(100, 500)
        cellunits = "Meters"
        labelStart = "Lower-Left"
        labelStyle = "Numeric"
        labelSeparator = "-"  # Only used for Alpha-Alpha but required parameter?
        output = os.path.join(Configuration.militaryScratchGDB, "grg")

        Configuration.Logger.debug("Cell Width: " + str(cellWidth))
        Configuration.Logger.debug("Cell Height: " + str(cellHeight))

        #Testing
        runToolMsg = "Running tool (Canvas Area GRG)"
        arcpy.AddMessage(runToolMsg)
        Configuration.Logger.info(runToolMsg)

        toolOutput = None

        try:
            # Calling the Create GRG From Area script tool
            toolOutput = arcpy.CreateGRGFromArea_mt(self.inputArea, \
                cellWidth, cellHeight, cellunits, \
                labelStart, labelStyle, labelSeparator, output)

        except arcpy.ExecuteError:
            UnitTestUtilities.handleArcPyError()
        except:
            UnitTestUtilities.handleGeneralError()

        Configuration.Logger.debug('''
        ==================================================================
        Check #1 Check the size of the grids that have been created using the
        assertLessEqual. Comparing this to the cellwidth and height times 2.
        If the number returned  is less than 1 the test passes.This is used
        because of the percision of the field does not produce the exact number.
        ==================================================================
        ''')

        primter_area = (cellWidth * 2) + (cellHeight * 2)
        field_name = "Shape_Length"
        with arcpy.da.SearchCursor(output, field_name) as cursor:
            for row in cursor:
                testlen = primter_area - int(row[0])
                self.assertLessEqual(testlen, 1)

        Configuration.Logger.debug('''
        ==================================================================
        Check #2 Check to see if all the correct numeric labels have been
        created. This is tested by comparing the numbers to objectID to the
        number sin the Grid attribute.
        ==================================================================
        ''')

        oid = []
        grid = []
        #Create a list with the attributes from the OID in output
        with arcpy.da.SearchCursor(output, "ObjectID") as cursor:
            for row in cursor:
                oid.append(row[0])
        #Create a list with the attributes from the Grid in output
        with arcpy.da.SearchCursor(output, "Grid") as cursor:
            for row in cursor:
                grid.append(int(row[0]))

        #sort the oid and grid to allow each list to be compared correctly
        list.sort(oid)
        list.sort(grid)
        Configuration.Logger.debug(oid)
        Configuration.Logger.debug(grid)

        #Compare the oid list and the grid list
        self.assertEquals(oid, grid)
コード例 #52
0
 def tearDown(self):
     if Configuration.DEBUG == True:
         print(".....ConversionUtilitiesTestCase.tearDown")
     UnitTestUtilities.deleteScratch(Configuration.militaryScratchGDB)
コード例 #53
0
    def testGRGAreaGRGSimple(self):
        '''
        Test GRG from area with a input of 100 meters as the cell width and height.
        The checks in the tis test will check:
                If the output feature class has been created
                If the expected amount of features have been created
        '''

        Configuration.Logger.debug(
            ".....GRGCreateGRGFromAreaTestCase.testGRGAreaGRGSimple")

        #inputs
        cellWidth = 100
        cellHeight = 100
        cellunits = "Meters"
        labelStart = "Lower-Left"
        labelStyle = "Numeric"
        labelSeparator = "-"  # Only used for Alpha-Alpha but required parameter?
        output = os.path.join(Configuration.militaryScratchGDB, "grg")

        Configuration.Logger.debug("Cell Width: " + str(cellWidth))
        Configuration.Logger.debug("Cell Height: " + str(cellHeight))

        #Testing
        runToolMsg = "Running tool (Canvas Area GRG)"
        arcpy.AddMessage(runToolMsg)
        Configuration.Logger.info(runToolMsg)

        toolOutput = None

        try:
            # Calling the Create GRG From Area script tool
            toolOutput = arcpy.CreateGRGFromArea_mt(self.inputArea, \
                cellWidth, cellHeight, cellunits, \
                labelStart, labelStyle, labelSeparator, output)

        except arcpy.ExecuteError:
            UnitTestUtilities.handleArcPyError()
        except:
            UnitTestUtilities.handleGeneralError()

        Configuration.Logger.debug('''
        ==================================================================
        Check #1 Check to see if the output featureclass is created
        ==================================================================
                ''')

        self.assertIsNotNone(toolOutput, "No output returned from tool")
        outputOut = toolOutput.getOutput(0)
        self.assertEqual(output, outputOut,
                         "Unexpected return value from tool")

        # 2: Check the number of features created
        Configuration.Logger.debug('''
        =================================================================
        Check #2 Check to see if the amount of features created is the
        number expected.
        ==================================================================
        ''')

        result = arcpy.GetCount_management(output)
        count = int(result.getOutput(0))
        Configuration.Logger.debug("Output number features: " + str(count))
        self.assertEqual(count, 40)
コード例 #54
0
def configCheck():
    UnitTestUtilities.checkFilePaths([Configuration.militaryDataPath, \
        Configuration.militaryInputDataGDB, Configuration.militaryResultsGDB, \
        Configuration.military_ProToolboxPath, Configuration.military_DesktopToolboxPath])
 def tearDown(self):
     Configuration.Logger.debug("     RadialLineOfSightTestCase.tearDown")
     UnitTestUtilities.deleteScratch(Configuration.militaryScratchGDB)
 def tearDownClass(cls):
     Configuration.Logger.debug(
         "     DistanceAndDirectionTestCase.tearDownClass")
     UnitTestUtilities.deleteScratch(Configuration.militaryScratchGDB)
コード例 #57
0
 def tearDown(self):
     if Configuration.DEBUG == True:
         print("     FindSubmarinesTestCase.tearDown")
     UnitTestUtilities.deleteScratch(Configuration.maritimeScratchGDB)
コード例 #58
0
 def tearDown(self):
     if Configuration.DEBUG == True:
         print("         SunPositionAndHillshadeTestCase.tearDown")
     UnitTestUtilities.deleteScratch(self.scratchGDB)
 def tearDown(self):
     if Configuration.DEBUG == True: print("     TableToPointTestCase.tearDown")
     UnitTestUtilities.deleteScratch(Configuration.militaryScratchGDB)
コード例 #60
0
 def tearDown(self):
     if Configuration.DEBUG is True: print("         CreateReferenceSystemGRGFromAreaTestCase.tearDown")
     UnitTestUtilities.deleteScratch(self.scratchGDB)