Improve tests: add external file support into AlgorithmsTest

This commit is contained in:
Médéric Ribreux 2016-05-06 14:25:12 +02:00 committed by Médéric RIBREUX
parent e70f9bcf0c
commit 1f21af6672
11 changed files with 460 additions and 1 deletions

View File

@ -136,8 +136,10 @@ class AlgorithmsTest:
try:
if param['type'] == 'vector' or param['type'] == 'raster':
return self.load_layer(param)
if param['type'] == 'multi':
elif param['type'] == 'multi':
return [self.load_param(p) for p in param['params']]
elif param['type'] == 'file':
return self.filepath_from_param(param)
except TypeError:
# No type specified, use whatever is there
return param

View File

@ -98,6 +98,20 @@ params:
OTHER: another param
```
### File type parameters
If you need an external file for the algorithm test, you need to specify the 'file' type and the (relative) path to the file in its 'name':
```yaml
params:
PAR: 2
STR: string
EXTFILE:
type: file
name: custom/grass7/extfile.txt
OTHER: another param
```
### Results
Results are specified very similar.

View File

@ -0,0 +1,20 @@
<PAMDataset>
<PAMRasterBand band="1">
<Histograms>
<HistItem>
<HistMin>-310.575</HistMin>
<HistMax>14854.575</HistMax>
<BucketCount>1000</BucketCount>
<IncludeOutOfRange>0</IncludeOutOfRange>
<Approximate>0</Approximate>
<HistCounts>8|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|15|15|15|16|15|15|8</HistCounts>
</HistItem>
</Histograms>
<Metadata>
<MDI key="STATISTICS_MAXIMUM">14847</MDI>
<MDI key="STATISTICS_MEAN">7272</MDI>
<MDI key="STATISTICS_MINIMUM">-303</MDI>
<MDI key="STATISTICS_STDDEV">4373.7169547194</MDI>
</Metadata>
</PAMRasterBand>
</PAMDataset>

View File

@ -0,0 +1,27 @@
<PAMDataset>
<PAMRasterBand band="1">
<Histograms>
<HistItem>
<HistMin>0.6</HistMin>
<HistMax>5.4</HistMax>
<BucketCount>5</BucketCount>
<IncludeOutOfRange>0</IncludeOutOfRange>
<Approximate>0</Approximate>
<HistCounts>2999|921|2110|4010|5000</HistCounts>
</HistItem>
</Histograms>
<Metadata>
<MDI key="COLOR_TABLE_RULES_COUNT">5</MDI>
<MDI key="COLOR_TABLE_RULE_RGB_0">1.000000e+00 1.800000e+00 255 255 0 0 255 0</MDI>
<MDI key="COLOR_TABLE_RULE_RGB_1">1.800000e+00 2.600000e+00 0 255 0 0 255 255</MDI>
<MDI key="COLOR_TABLE_RULE_RGB_2">2.600000e+00 3.400000e+00 0 255 255 0 0 255</MDI>
<MDI key="COLOR_TABLE_RULE_RGB_3">3.400000e+00 4.200000e+00 0 0 255 255 0 255</MDI>
<MDI key="COLOR_TABLE_RULE_RGB_4">4.200000e+00 5.000000e+00 255 0 255 255 0 0</MDI>
<MDI key="Generated_with">GRASS GIS 7.0.3</MDI>
<MDI key="STATISTICS_MAXIMUM">5</MDI>
<MDI key="STATISTICS_MEAN">3.4714760638298</MDI>
<MDI key="STATISTICS_MINIMUM">1</MDI>
<MDI key="STATISTICS_STDDEV">1.4943102023375</MDI>
</Metadata>
</PAMRasterBand>
</PAMDataset>

View File

@ -0,0 +1,27 @@
<PAMDataset>
<PAMRasterBand band="1">
<Histograms>
<HistItem>
<HistMin>0.5833333333333333</HistMin>
<HistMax>6.416666666666667</HistMax>
<BucketCount>6</BucketCount>
<IncludeOutOfRange>0</IncludeOutOfRange>
<Approximate>0</Approximate>
<HistCounts>1999|920|2110|3010|1960|5001</HistCounts>
</HistItem>
</Histograms>
<Metadata>
<MDI key="COLOR_TABLE_RULES_COUNT">5</MDI>
<MDI key="COLOR_TABLE_RULE_RGB_0">1.000000e+00 2.000000e+00 255 255 0 0 255 0</MDI>
<MDI key="COLOR_TABLE_RULE_RGB_1">2.000000e+00 3.000000e+00 0 255 0 0 255 255</MDI>
<MDI key="COLOR_TABLE_RULE_RGB_2">3.000000e+00 4.000000e+00 0 255 255 0 0 255</MDI>
<MDI key="COLOR_TABLE_RULE_RGB_3">4.000000e+00 5.000000e+00 0 0 255 255 0 255</MDI>
<MDI key="COLOR_TABLE_RULE_RGB_4">5.000000e+00 6.000000e+00 255 0 255 255 0 0</MDI>
<MDI key="Generated_with">GRASS GIS 7.0.3</MDI>
<MDI key="STATISTICS_MAXIMUM">6</MDI>
<MDI key="STATISTICS_MEAN">4.1343333333333</MDI>
<MDI key="STATISTICS_MINIMUM">1</MDI>
<MDI key="STATISTICS_STDDEV">1.7411551401935</MDI>
</Metadata>
</PAMRasterBand>
</PAMDataset>

View File

@ -0,0 +1,17 @@
#
#
300
7043.06
1.89772e+07
#
1700
7405.93
2.01921e+07
#
6000
7287.21
1.90221e+07
#
7000
7246.81
1.90226e+07

View File

@ -0,0 +1,124 @@
title:
nbands: 1
class:
classnum: 1
classtitle:
classtype: 1
subclass:
pi: 0.22802
means: 9764.5
covar:
3.02234e+06
endsubclass:
subclass:
pi: 0.495197
means: 5208.5
covar:
7.97435e+06
endsubclass:
subclass:
pi: 0.118668
means: 997.979
covar:
686411
endsubclass:
subclass:
pi: 0.158115
means: 13401
covar:
702077
endsubclass:
endclass:
class:
classnum: 2
classtitle:
classtype: 1
subclass:
pi: 0.177696
means: 13267.4
covar:
1.06971e+06
endsubclass:
subclass:
pi: 0.172485
means: 3861.81
covar:
2.35556e+06
endsubclass:
subclass:
pi: 0.48383
means: 8696.48
covar:
7.62681e+06
endsubclass:
subclass:
pi: 0.165989
means: 1052.05
covar:
692627
endsubclass:
endclass:
class:
classnum: 3
classtitle:
classtype: 1
subclass:
pi: 0.135816
means: 1158.36
covar:
934515
endsubclass:
subclass:
pi: 0.187835
means: 11847.9
covar:
1.74438e+06
endsubclass:
subclass:
pi: 0.0829488
means: 14066.2
covar:
268579
endsubclass:
subclass:
pi: 0.5934
means: 6298.74
covar:
8.66516e+06
endsubclass:
endclass:
class:
classnum: 4
classtitle:
classtype: 1
subclass:
pi: 0.278456
means: 3394.59
covar:
2.33337e+06
endsubclass:
subclass:
pi: 0.0849227
means: 13998.4
covar:
256746
endsubclass:
subclass:
pi: 0.102818
means: 686.099
covar:
379342
endsubclass:
subclass:
pi: 0.222279
means: 11683.6
covar:
1.75208e+06
endsubclass:
subclass:
pi: 0.311523
means: 7849.26
covar:
3.21781e+06
endsubclass:
endclass:

View File

@ -236,3 +236,231 @@ tests:
output:
hash: 270bbef9dd111af5df23a819cb0848e104e0cf4949e794a67fa0b3f2
type: rasterhash
- algorithm: grass7:i.group
name: GRASS7 i.group
params:
GRASS_REGION_PARAMETER: '344500.0,358400.0,6682800.0,6693700.0'
input:
type: multi
params:
- name: custom/grass7/raster_6class.tif
type: raster
- name: custom/grass7/raster_5class.tif
type: raster
- name: custom/grass7/raster_4class.tif
type: raster
results:
group:
hash: e1a433546cc1fdf7061adc0d9b77676c9d66ee8e0773d471bdb39a37
type: rasterhash
- algorithm: grass7:i.cluster
name: GRASS7 i.cluster
params:
GRASS_REGION_PARAMETER: '344500.0,358400.0,6682800.0,6693700.0'
classes: 5
convergence: 98
input:
params:
- name: custom/grass7/raster_6class.tif
type: raster
- name: custom/grass7/raster_5class.tif
type: raster
- name: custom/grass7/raster_4class.tif
type: raster
type: multi
iterations: 30
min_size: 17
separation: 0
results:
signaturefile:
type: regex
name: expected/grass7/i.cluster.sig.txt
rules:
- '#Class 1'
- '1.83333 1.53759 3.31579'
- '#Class 2'
- '2.11045 4.35498 3.32266'
- '#Class 3'
- '5.32655 1.72558 3.32713'
- '#Class 4'
- '4.34567 4.36522 3.30235'
- '#Class 5'
- '6 4.55734 3.30291'
- algorithm: grass7:i.oif
name: GRASS7 i.oif
params:
GRASS_REGION_PARAMETER: '344500.0,358400.0,6682800.0,6693700.0'
input:
params:
- name: custom/grass7/float_raster.tif
type: raster
- name: custom/grass7/raster_6class.tif
type: raster
- name: custom/grass7/raster_5class.tif
type: raster
- name: custom/grass7/raster_4class.tif
type: raster
type: multi
results:
output:
type: regex
name: expected/grass7/i.oif.txt
rules:
- '118773.1947'
- '4541.9055'
- '4369.2930'
- '128.6900'
- algorithm: grass7:i.fft
name: GRASS7 i.fft
params:
GRASS_REGION_PARAMETER: '344500.0,358400.0,6682800.0,6693700.0'
input:
name: custom/grass7/float_raster.tif
type: raster
results:
imaginary:
hash: 94249384dd8b6019f0024501bc9a093cba9dd025c183d3fb46d77027
type: rasterhash
real:
hash: 09ab93c65aa2dde4da422b62a5ed3e38208e2da072cec2b0eb837a47
type: rasterhash
- algorithm: grass7:i.segment
name: GRASS7 i.segment
params:
GRASS_REGION_PARAMETER: '344500.0,358400.0,6682800.0,6693700.0'
input:
params:
- name: custom/grass7/raster_6class.tif
type: raster
- name: custom/grass7/raster_5class.tif
type: raster
- name: custom/grass7/raster_4class.tif
type: raster
type: multi
iterations: 20
memory: 300
method: 0
minsize: 1
similarity: 0
threshold: 0.5
results:
goodness:
hash: 5cb3cc31a68c03ea76578559b04ffa5f81331a4232abb38d09b29ea4
type: rasterhash
output:
hash: b65992a5d48b867d4a32a533f38e7a72cb1ba18f1e261c6be132baca
type: rasterhash
- algorithm: grass7:i.gensig
name: GRASS7 i.gensig
params:
GRASS_REGION_PARAMETER: '344500.0,358400.0,6682800.0,6693700.0'
input:
params:
- name: custom/grass7/float_raster.tif
type: raster
type: multi
trainingmap:
name: custom/grass7/raster_4class.tif
type: raster
results:
signaturefile:
type: file
name: expected/grass7/i.gensig.txt
- algorithm: grass7:i.gensigset
name: GRASS7 i.gensigset
params:
GRASS_REGION_PARAMETER: '344500.0,358400.0,6682800.0,6693700.0'
input:
params:
- name: custom/grass7/float_raster.tif
type: raster
type: multi
maxsig: 5
trainingmap:
name: custom/grass7/raster_4class.tif
type: raster
results:
signaturefile:
type: file
name: expected/grass7/i.gensigset.txt
- algorithm: grass7:i.rgb.his
name: GRASS7 i.rgb.his
params:
GRASS_REGION_PARAMETER: '344500.0,358400.0,6682800.0,6693700.0'
blue:
name: custom/grass7/raster_6class.tif
type: raster
green:
name: custom/grass7/raster_5class.tif
type: raster
red:
name: custom/grass7/raster_4class.tif
type: raster
results:
hue:
hash: d82c717b0aca5c7bb49d6f2b086a188a6fbdc397c533734911261f74
type: rasterhash
intensity:
hash: 6d75d7a40460611301a1f2c2b162d08ae20fb5527d80509f19748b3c
type: rasterhash
saturation:
hash: 07578ad38cf948473a519f040acb0235f60a592904ac8ef46aa607e1
type: rasterhash
- algorithm: grass7:i.pansharpen
name: GRASS7 i.pansharpen
params:
GRASS_REGION_PARAMETER: '344500.0,358400.0,6682800.0,6693700.0'
blue:
name: custom/grass7/raster_4class.tif
type: raster
green:
name: custom/grass7/raster_5class.tif
type: raster
method: 2
pan:
name: custom/grass7/float_raster.tif
type: raster
red:
name: custom/grass7/raster_6class.tif
type: raster
results:
blueoutput:
hash: b8f6f6d11751ec26eb93daed87611e473efe6146ad3e84bce13c3393
type: rasterhash
greenoutput:
hash: 522356ef99242f7be6ad65c23af9148f5a807deca89c1efec1db38c1
type: rasterhash
redoutput:
hash: c6b99e12c2eab3016bbf8d15888c353c3fdb1b84674deac78e3e2bfc
type: rasterhash
# Don't work, needs to handle external files in tests code
- algorithm: grass7:i.smap
name: GRASS7 i.smap
params:
GRASS_REGION_PARAMETER: '344500.0,358400.0,6682800.0,6693700.0'
blocksize: 1024
input:
params:
- name: custom/grass7/float_raster.tif
type: raster
type: multi
signaturefile:
type: file
name: expected/grass7/i.gensigset.txt
results:
goodness:
hash: 26c3f407312e8a9e03e91c32e526f71ea9cfa78037a90a5f78f0818e
type: rasterhash
output:
hash: f9e99ac3891b23c650add0478bb5225444183c61c6a4c321a7c2a16f
type: rasterhash