summaryrefslogtreecommitdiffstats
path: root/petascope/test
diff options
context:
space:
mode:
Diffstat (limited to 'petascope/test')
-rwxr-xr-xpetascope/test/antlr.sh5
-rwxr-xr-xpetascope/test/full-test-online.sh14
-rwxr-xr-xpetascope/test/test-grammar-remote.sh5
-rwxr-xr-xpetascope/test/test-xml-remote.sh5
-rw-r--r--petascope/test/testcases-wcps/01-just_trim.rasql1
-rw-r--r--petascope/test/testcases-wcps/01-just_trim.test1
-rw-r--r--petascope/test/testcases-wcps/01-just_trim.xml3
-rw-r--r--petascope/test/testcases-wcps/02-trim_field_difference.rasql1
-rw-r--r--petascope/test/testcases-wcps/02-trim_field_difference.test1
-rw-r--r--petascope/test/testcases-wcps/02-trim_field_difference.xml3
-rw-r--r--petascope/test/testcases-wcps/03-simple_count.rasql1
-rw-r--r--petascope/test/testcases-wcps/03-simple_count.test1
-rw-r--r--petascope/test/testcases-wcps/03-simple_count.xml3
-rw-r--r--petascope/test/testcases-wcps/04-vegetation_index.rasql1
-rw-r--r--petascope/test/testcases-wcps/04-vegetation_index.test1
-rw-r--r--petascope/test/testcases-wcps/04-vegetation_index.xml3
-rw-r--r--petascope/test/testcases-wcps/05-just_encode.rasql1
-rw-r--r--petascope/test/testcases-wcps/05-just_encode.test1
-rw-r--r--petascope/test/testcases-wcps/05-just_encode.xml3
-rw-r--r--petascope/test/testcases-wcps/06-just_cast_inverse.rasql1
-rw-r--r--petascope/test/testcases-wcps/06-just_cast_inverse.test1
-rw-r--r--petascope/test/testcases-wcps/06-just_cast_inverse.xml3
-rw-r--r--petascope/test/testcases-wcps/07-just_slice.rasql1
-rw-r--r--petascope/test/testcases-wcps/07-just_slice.test1
-rw-r--r--petascope/test/testcases-wcps/07-just_slice.xml3
-rw-r--r--petascope/test/testcases-wcps/08-just_encode_field.rasql1
-rw-r--r--petascope/test/testcases-wcps/08-just_encode_field.test1
-rw-r--r--petascope/test/testcases-wcps/08-just_encode_field.xml3
-rw-r--r--petascope/test/testcases-wcps/09-just_log.rasql1
-rw-r--r--petascope/test/testcases-wcps/09-just_log.test1
-rw-r--r--petascope/test/testcases-wcps/09-just_log.xml3
-rw-r--r--petascope/test/testcases-wcps/10-just_field_difference.rasql1
-rw-r--r--petascope/test/testcases-wcps/10-just_field_difference.test1
-rw-r--r--petascope/test/testcases-wcps/10-just_field_difference.xml3
-rw-r--r--petascope/test/testcases-wcps/11_vegetation_index_computation.rasql1
-rw-r--r--petascope/test/testcases-wcps/11_vegetation_index_computation.test1
-rw-r--r--petascope/test/testcases-wcps/11_vegetation_index_computation.xml3
-rw-r--r--petascope/test/testcases-wcps/12-vegetation_index.rasql1
-rw-r--r--petascope/test/testcases-wcps/12-vegetation_index.test1
-rw-r--r--petascope/test/testcases-wcps/12-vegetation_index.xml3
-rw-r--r--petascope/test/testcases-wcps/13-just_encode_three_coverages.rasql1
-rw-r--r--petascope/test/testcases-wcps/13-just_encode_three_coverages.test1
-rw-r--r--petascope/test/testcases-wcps/13-just_encode_three_coverages.xml3
-rw-r--r--petascope/test/testcases-wcps/14_count_vegetation_cells.rasql1
-rw-r--r--petascope/test/testcases-wcps/14_count_vegetation_cells.test2
-rw-r--r--petascope/test/testcases-wcps/14_count_vegetation_cells.xml3
-rw-r--r--petascope/test/testcases-wcps/15-construct_simple_gray_gradient.rasql1
-rw-r--r--petascope/test/testcases-wcps/15-construct_simple_gray_gradient.test8
-rw-r--r--petascope/test/testcases-wcps/15-construct_simple_gray_gradient.xml3
-rw-r--r--petascope/test/testcases-wcps/16-simple_histogram.rasql1
-rw-r--r--petascope/test/testcases-wcps/16-simple_histogram.test6
-rw-r--r--petascope/test/testcases-wcps/16-simple_histogram.xml3
-rw-r--r--petascope/test/testcases-wcps/17-climate_over_earth.rasql1
-rw-r--r--petascope/test/testcases-wcps/17-climate_over_earth.test5
-rw-r--r--petascope/test/testcases-wcps/17-climate_over_earth.xml3
-rw-r--r--petascope/test/testcases-wcps/18-climate_over_water.rasql1
-rw-r--r--petascope/test/testcases-wcps/18-climate_over_water.test5
-rw-r--r--petascope/test/testcases-wcps/18-climate_over_water.xml3
-rw-r--r--petascope/test/testcases-wcps/19-just_sinus.rasql1
-rw-r--r--petascope/test/testcases-wcps/19-just_sinus.test1
-rw-r--r--petascope/test/testcases-wcps/19-just_sinus.xml3
-rw-r--r--petascope/test/testcases-wcps/20-just_tangent.rasql1
-rw-r--r--petascope/test/testcases-wcps/20-just_tangent.test1
-rw-r--r--petascope/test/testcases-wcps/20-just_tangent.xml3
-rw-r--r--petascope/test/testcases-wcps/21-just_exponent.rasql1
-rw-r--r--petascope/test/testcases-wcps/21-just_exponent.test1
-rw-r--r--petascope/test/testcases-wcps/21-just_exponent.xml3
-rw-r--r--petascope/test/testcases-wcps/22-just_max_double.rasql1
-rw-r--r--petascope/test/testcases-wcps/22-just_max_double.test1
-rw-r--r--petascope/test/testcases-wcps/22-just_max_double.xml3
-rw-r--r--petascope/test/testcases-wcps/23_shown_only_green_areas.rasql1
-rw-r--r--petascope/test/testcases-wcps/23_shown_only_green_areas.test4
-rw-r--r--petascope/test/testcases-wcps/23_shown_only_green_areas.xml3
-rw-r--r--petascope/test/testcases-wcps/24-condense_coverage_one_var.rasql1
-rw-r--r--petascope/test/testcases-wcps/24-condense_coverage_one_var.test4
-rw-r--r--petascope/test/testcases-wcps/24-condense_coverage_one_var.xml3
-rw-r--r--petascope/test/testcases-wcps/25-condense_field_two_vars.rasql1
-rw-r--r--petascope/test/testcases-wcps/25-condense_field_two_vars.test5
-rw-r--r--petascope/test/testcases-wcps/25-condense_field_two_vars.xml3
-rw-r--r--petascope/test/testcases-wcps/26-constant_coverage.rasql1
-rw-r--r--petascope/test/testcases-wcps/26-constant_coverage.test6
-rw-r--r--petascope/test/testcases-wcps/26-constant_coverage.xml3
-rw-r--r--petascope/test/testcases-wcps/27-construct_boring_histogram.rasql1
-rw-r--r--petascope/test/testcases-wcps/27-construct_boring_histogram.test9
-rw-r--r--petascope/test/testcases-wcps/27-construct_boring_histogram.xml3
-rw-r--r--petascope/test/testcases-wcps/28-construct_histogram_range_condition.rasql1
-rw-r--r--petascope/test/testcases-wcps/28-construct_histogram_range_condition.test9
-rw-r--r--petascope/test/testcases-wcps/28-construct_histogram_range_condition.xml3
-rw-r--r--petascope/test/testcases-wcps/29-filter_image(lines).rasql1
-rw-r--r--petascope/test/testcases-wcps/29-filter_image(lines).test17
-rw-r--r--petascope/test/testcases-wcps/29-filter_image(lines).xml3
-rw-r--r--petascope/test/testcases-wcps/30-construct_count.rasql1
-rw-r--r--petascope/test/testcases-wcps/30-construct_count.test6
-rw-r--r--petascope/test/testcases-wcps/30-construct_count.xml3
-rw-r--r--petascope/test/testcases-wcps/31-Discrete_Fourier.rasql1
-rw-r--r--petascope/test/testcases-wcps/31-Discrete_Fourier.test23
-rw-r--r--petascope/test/testcases-wcps/31-Discrete_Fourier.xml3
-rw-r--r--petascope/test/testcases-wcps/32-construct_condense_cosinus_gray_image.rasql1
-rw-r--r--petascope/test/testcases-wcps/32-construct_condense_cosinus_gray_image.test9
-rw-r--r--petascope/test/testcases-wcps/32-construct_condense_cosinus_gray_image.xml3
-rw-r--r--petascope/test/testcases-wcps/33-construct_condense_gray_image.rasql1
-rw-r--r--petascope/test/testcases-wcps/33-construct_condense_gray_image.test9
-rw-r--r--petascope/test/testcases-wcps/33-construct_condense_gray_image.xml3
-rw-r--r--petascope/test/testcases-wcps/34-where_clause.rasql1
-rw-r--r--petascope/test/testcases-wcps/34-where_clause.test4
-rw-r--r--petascope/test/testcases-wcps/34-where_clause.xml25
-rw-r--r--petascope/test/testcases-wcps/35-coordinates_in_wgs84_crs.rasql1
-rw-r--r--petascope/test/testcases-wcps/35-coordinates_in_wgs84_crs.test1
-rw-r--r--petascope/test/testcases-wcps/35-coordinates_in_wgs84_crs.xml33
-rw-r--r--petascope/test/testcases-wcps/36-simple_overlay.rasql1
-rw-r--r--petascope/test/testcases-wcps/36-simple_overlay.test1
-rw-r--r--petascope/test/testcases-wcps/36-simple_overlay.xml24
-rw-r--r--petascope/test/testcases-wcps/37-simple_extend.rasql1
-rw-r--r--petascope/test/testcases-wcps/37-simple_extend.test1
-rw-r--r--petascope/test/testcases-wcps/37-simple_extend.xml31
-rw-r--r--petascope/test/testcases-wcps/38-complex_extend.rasql1
-rw-r--r--petascope/test/testcases-wcps/38-complex_extend.test1
-rw-r--r--petascope/test/testcases-wcps/38-complex_extend.xml3
-rw-r--r--petascope/test/testcases-wcps/39-complex_extend-2.rasql1
-rw-r--r--petascope/test/testcases-wcps/39-complex_extend-2.test1
-rw-r--r--petascope/test/testcases-wcps/39-complex_extend-2.xml39
-rw-r--r--petascope/test/testcases-wcps/40-range_structure.rasql1
-rw-r--r--petascope/test/testcases-wcps/40-range_structure.test9
-rw-r--r--petascope/test/testcases-wcps/40-range_structure.xml45
-rw-r--r--petascope/test/testcases-wcps/41-filter_calculation_reloaded.rasql1
-rw-r--r--petascope/test/testcases-wcps/41-filter_calculation_reloaded.test17
-rw-r--r--petascope/test/testcases-wcps/41-filter_calculation_reloaded.xml113
-rw-r--r--petascope/test/testcases-wcps/42-filter_calculation.rasql1
-rw-r--r--petascope/test/testcases-wcps/42-filter_calculation.test17
-rw-r--r--petascope/test/testcases-wcps/42-filter_calculation.xml109
-rw-r--r--petascope/test/testcases-wcps/43-encoder_options.rasql1
-rw-r--r--petascope/test/testcases-wcps/43-encoder_options.test2
-rw-r--r--petascope/test/testcases-wcps/43-encoder_options.xml16
-rw-r--r--petascope/test/testcases-wcps/44-scaling_operation.rasql1
-rw-r--r--petascope/test/testcases-wcps/44-scaling_operation.test2
-rw-r--r--petascope/test/testcases-wcps/44-scaling_operation.xml30
-rw-r--r--petascope/test/testcases-wcps/abstract.xml8
-rw-r--r--petascope/test/testcases-wcs/input/DescribeCoverage1.xml4
-rw-r--r--petascope/test/testcases-wcs/input/DescribeCoverage2.xml7
-rw-r--r--petascope/test/testcases-wcs/input/GetCapabilitiesMax.xml15
-rw-r--r--petascope/test/testcases-wcs/input/GetCoverage1.xml11
-rw-r--r--petascope/test/testcases-wcs/input/GetCoverage2.xml17
-rw-r--r--petascope/test/testcases-wcs/input/GetCoverage3.xml23
-rw-r--r--petascope/test/testcases-wcs/input/GetCoverage4.xml35
-rw-r--r--petascope/test/testcases-wcs/output/Capabilities.xml181
-rw-r--r--petascope/test/testcases-wcs/output/CoverageDescriptions1.xml4
-rw-r--r--petascope/test/testcases-wcs/output/CoverageDescriptions2.xml126
-rw-r--r--petascope/test/testcases-wcs/output/ProcessCoverage1.xml25
-rw-r--r--petascope/test/testcases-wcs/output/ProcessCoverage2.xml35
-rw-r--r--petascope/test/testcases-wcs/output/ProcessCoverage3.xml46
-rw-r--r--petascope/test/testcases-wcs/output/ProcessCoverage4.xml4
-rw-r--r--petascope/test/testcases-wcs/working/DescribeCoverage.1.xml7
-rw-r--r--petascope/test/testcases-wcs/working/GetCapabilities.xml15
-rw-r--r--petascope/test/testcases-wcs/working/GetCoverage.1.xml11
-rw-r--r--petascope/test/testcases-wcst/CoverageDescriptions1.xml29
-rw-r--r--petascope/test/testcases-wcst/CoverageDescriptions2.xml38
-rw-r--r--petascope/test/testcases-wcst/CoverageSummary1.xml6
-rw-r--r--petascope/test/testcases-wcst/CoverageSummary2.xml6
-rw-r--r--petascope/test/testcases-wcst/Transaction1-async.xml30
-rw-r--r--petascope/test/testcases-wcst/Transaction1.xml27
-rw-r--r--petascope/test/testcases-wcst/Transaction2.xml37
-rw-r--r--petascope/test/testcases-wcst/Transaction3.xml21
-rwxr-xr-xpetascope/test/wcps_grammar.sh16
-rwxr-xr-xpetascope/test/wcps_xml.sh11
-rw-r--r--petascope/test/wcs/server/core/TimeStringTest.java140
165 files changed, 1775 insertions, 0 deletions
diff --git a/petascope/test/antlr.sh b/petascope/test/antlr.sh
new file mode 100755
index 0000000..13c274d
--- /dev/null
+++ b/petascope/test/antlr.sh
@@ -0,0 +1,5 @@
+#! /bin/bash
+
+# This script opens the ANTLRWorks editor, and the WCPS grammar in it, for editing.
+java -Xms128m -Xmx300m -jar ../lib/antlrworks-1.2.3.jar ../src/java/grammar/wcps.g
+
diff --git a/petascope/test/full-test-online.sh b/petascope/test/full-test-online.sh
new file mode 100755
index 0000000..2356719
--- /dev/null
+++ b/petascope/test/full-test-online.sh
@@ -0,0 +1,14 @@
+#! /bin/bash
+# Command-line utility for testing PetaScope WCPS
+# Usage: ./full-test-online.sh [URL] [testFolder] [outputFolder]
+# Parameters:
+# * URL: the URL of the PetaScope implementation. Defaults to the new implementation on kahlua
+# * testFolder: the folder that contains abstract syntax query test cases (extension ".test")
+# * outputFolder: the folder where the script should save intermediate and output files.
+#
+# WARNING: if you use relative paths for the folders, they should be relative to the project folder, not to the test folder !
+
+CLASSPATH=.:lib/wcps-all.jar:lib/jaxb-api.jar:lib/jaxb-impl.jar:lib/postgresql-8.3-604.jdbc4.jar:lib/jsr173_api.jar:lib/rasj.jar:lib/commons-math-1.1.jar:lib/antlrworks-1.2.3.jar:lib/commons-io-1.3.2.jar
+
+# cd .. && make jar && java -cp $CLASSPATH wcps.server.test.FullTestsOnline $1 $2 $3
+cd .. && java -cp $CLASSPATH wcps.server.test.FullTestsOnline $1 $2 $3
diff --git a/petascope/test/test-grammar-remote.sh b/petascope/test/test-grammar-remote.sh
new file mode 100755
index 0000000..d325761
--- /dev/null
+++ b/petascope/test/test-grammar-remote.sh
@@ -0,0 +1,5 @@
+#! /bin/bash
+
+CLASSPATH=.:lib/wcps-all.jar:lib/jaxb-api.jar:lib/jaxb-impl.jar:lib/postgresql-8.3-604.jdbc4.jar:lib/jsr173_api.jar:lib/rasj.jar:lib/commons-math-1.1.jar:lib/antlrworks-1.2.3.jar:lib/commons-io-1.3.2.jar
+
+cd .. && make jar && java -cp $CLASSPATH wcps.server.test.GrammarTestOnline
diff --git a/petascope/test/test-xml-remote.sh b/petascope/test/test-xml-remote.sh
new file mode 100755
index 0000000..b0860d4
--- /dev/null
+++ b/petascope/test/test-xml-remote.sh
@@ -0,0 +1,5 @@
+#! /bin/bash
+
+CLASSPATH=.:lib/wcps-all.jar:lib/jaxb-api.jar:lib/jaxb-impl.jar:lib/postgresql-8.3-604.jdbc4.jar:lib/jsr173_api.jar:lib/rasj.jar:lib/commons-math-1.1.jar:lib/antlrworks-1.2.3.jar:lib/commons-io-1.3.2.jar
+
+cd .. && make jar && java -cp $CLASSPATH wcps.server.test.XmlTestOnline
diff --git a/petascope/test/testcases-wcps/01-just_trim.rasql b/petascope/test/testcases-wcps/01-just_trim.rasql
new file mode 100644
index 0000000..e84cc38
--- /dev/null
+++ b/petascope/test/testcases-wcps/01-just_trim.rasql
@@ -0,0 +1 @@
+select png(c[0:450,0:300]) from rgb AS c \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/01-just_trim.test b/petascope/test/testcases-wcps/01-just_trim.test
new file mode 100644
index 0000000..5ba949b
--- /dev/null
+++ b/petascope/test/testcases-wcps/01-just_trim.test
@@ -0,0 +1 @@
+for c in ( rgb ) return encode( c[ x(0:450), y(0:300) ], "png" )
diff --git a/petascope/test/testcases-wcps/01-just_trim.xml b/petascope/test/testcases-wcps/01-just_trim.xml
new file mode 100644
index 0000000..debcb3f
--- /dev/null
+++ b/petascope/test/testcases-wcps/01-just_trim.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+<query><xmlSyntax><coverageIterator><iteratorVar>c</iteratorVar><coverageName>rgb</coverageName></coverageIterator><encode store="false"><trim><coverage>c</coverage><axis>x</axis><lowerBound><numericConstant>0</numericConstant></lowerBound><upperBound><numericConstant>450</numericConstant></upperBound><axis>y</axis><lowerBound><numericConstant>0</numericConstant></lowerBound><upperBound><numericConstant>300</numericConstant></upperBound></trim><format>png</format></encode></xmlSyntax></query></ProcessCoveragesRequest> \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/02-trim_field_difference.rasql b/petascope/test/testcases-wcps/02-trim_field_difference.rasql
new file mode 100644
index 0000000..c684224
--- /dev/null
+++ b/petascope/test/testcases-wcps/02-trim_field_difference.rasql
@@ -0,0 +1 @@
+select png((char)(abs((((c).1)-((c).0))))[0:450,0:300]) from rgb AS c \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/02-trim_field_difference.test b/petascope/test/testcases-wcps/02-trim_field_difference.test
new file mode 100644
index 0000000..493c2e9
--- /dev/null
+++ b/petascope/test/testcases-wcps/02-trim_field_difference.test
@@ -0,0 +1 @@
+for c in ( rgb ) return encode( ((char) abs( c.1 - c.0 ))[ x(0:450), y(0:300) ], "png" )
diff --git a/petascope/test/testcases-wcps/02-trim_field_difference.xml b/petascope/test/testcases-wcps/02-trim_field_difference.xml
new file mode 100644
index 0000000..80e5d61
--- /dev/null
+++ b/petascope/test/testcases-wcps/02-trim_field_difference.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+<query><xmlSyntax><coverageIterator><iteratorVar>c</iteratorVar><coverageName>rgb</coverageName></coverageIterator><encode store="false"><trim><cast><abs><minus><fieldSelect><coverage>c</coverage><field><name>1</name></field></fieldSelect><fieldSelect><coverage>c</coverage><field><name>0</name></field></fieldSelect></minus></abs><type>char</type></cast><axis>x</axis><lowerBound><numericConstant>0</numericConstant></lowerBound><upperBound><numericConstant>450</numericConstant></upperBound><axis>y</axis><lowerBound><numericConstant>0</numericConstant></lowerBound><upperBound><numericConstant>300</numericConstant></upperBound></trim><format>png</format></encode></xmlSyntax></query></ProcessCoveragesRequest> \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/03-simple_count.rasql b/petascope/test/testcases-wcps/03-simple_count.rasql
new file mode 100644
index 0000000..0fc4e39
--- /dev/null
+++ b/petascope/test/testcases-wcps/03-simple_count.rasql
@@ -0,0 +1 @@
+select count_cells((((c).1)=(0))) from rgb AS c \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/03-simple_count.test b/petascope/test/testcases-wcps/03-simple_count.test
new file mode 100644
index 0000000..da2cf4c
--- /dev/null
+++ b/petascope/test/testcases-wcps/03-simple_count.test
@@ -0,0 +1 @@
+for c in ( rgb ) return count( c.1 = 0 )
diff --git a/petascope/test/testcases-wcps/03-simple_count.xml b/petascope/test/testcases-wcps/03-simple_count.xml
new file mode 100644
index 0000000..5b1867d
--- /dev/null
+++ b/petascope/test/testcases-wcps/03-simple_count.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+<query><xmlSyntax><coverageIterator><iteratorVar>c</iteratorVar><coverageName>rgb</coverageName></coverageIterator><count><equals><fieldSelect><coverage>c</coverage><field><name>1</name></field></fieldSelect><numericConstant>0</numericConstant></equals></count></xmlSyntax></query></ProcessCoveragesRequest> \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/04-vegetation_index.rasql b/petascope/test/testcases-wcps/04-vegetation_index.rasql
new file mode 100644
index 0000000..0142faf
--- /dev/null
+++ b/petascope/test/testcases-wcps/04-vegetation_index.rasql
@@ -0,0 +1 @@
+select png((char)((((((((((c).0)/((float)((((c).0)+((c).1))))))-((((c).1)/((float)((((c).0)+((c).1))))))))>(0.6)))*(255)))) from rgb AS c \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/04-vegetation_index.test b/petascope/test/testcases-wcps/04-vegetation_index.test
new file mode 100644
index 0000000..a6b69d4
--- /dev/null
+++ b/petascope/test/testcases-wcps/04-vegetation_index.test
@@ -0,0 +1 @@
+for c in ( rgb ) return encode((char) ( ((c.0 / ((float)c.0 + c.1))-(c.1 / ((float)c.0 + c.1))) > 0.6 ) * 255, "png" )
diff --git a/petascope/test/testcases-wcps/04-vegetation_index.xml b/petascope/test/testcases-wcps/04-vegetation_index.xml
new file mode 100644
index 0000000..3fbbb7f
--- /dev/null
+++ b/petascope/test/testcases-wcps/04-vegetation_index.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+<query><xmlSyntax><coverageIterator><iteratorVar>c</iteratorVar><coverageName>rgb</coverageName></coverageIterator><encode store="false"><cast><mult><greaterThan><minus><div><fieldSelect><coverage>c</coverage><field><name>0</name></field></fieldSelect><cast><plus><fieldSelect><coverage>c</coverage><field><name>0</name></field></fieldSelect><fieldSelect><coverage>c</coverage><field><name>1</name></field></fieldSelect></plus><type>float</type></cast></div><div><fieldSelect><coverage>c</coverage><field><name>1</name></field></fieldSelect><cast><plus><fieldSelect><coverage>c</coverage><field><name>0</name></field></fieldSelect><fieldSelect><coverage>c</coverage><field><name>1</name></field></fieldSelect></plus><type>float</type></cast></div></minus><numericConstant>0.6</numericConstant></greaterThan><numericConstant>255</numericConstant></mult><type>char</type></cast><format>png</format></encode></xmlSyntax></query></ProcessCoveragesRequest> \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/05-just_encode.rasql b/petascope/test/testcases-wcps/05-just_encode.rasql
new file mode 100644
index 0000000..00018fc
--- /dev/null
+++ b/petascope/test/testcases-wcps/05-just_encode.rasql
@@ -0,0 +1 @@
+select jpeg(c) from rgb AS c \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/05-just_encode.test b/petascope/test/testcases-wcps/05-just_encode.test
new file mode 100644
index 0000000..51dd902
--- /dev/null
+++ b/petascope/test/testcases-wcps/05-just_encode.test
@@ -0,0 +1 @@
+for c in ( rgb ) return encode( c, "jpeg" )
diff --git a/petascope/test/testcases-wcps/05-just_encode.xml b/petascope/test/testcases-wcps/05-just_encode.xml
new file mode 100644
index 0000000..0bd3be0
--- /dev/null
+++ b/petascope/test/testcases-wcps/05-just_encode.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+<query><xmlSyntax><coverageIterator><iteratorVar>c</iteratorVar><coverageName>rgb</coverageName></coverageIterator><encode store="false"><coverage>c</coverage><format>jpeg</format></encode></xmlSyntax></query></ProcessCoveragesRequest> \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/06-just_cast_inverse.rasql b/petascope/test/testcases-wcps/06-just_cast_inverse.rasql
new file mode 100644
index 0000000..5a999e1
--- /dev/null
+++ b/petascope/test/testcases-wcps/06-just_cast_inverse.rasql
@@ -0,0 +1 @@
+select jpeg((char)(((255)-((c).red)))[50:150,50:150]) from rgb AS c \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/06-just_cast_inverse.test b/petascope/test/testcases-wcps/06-just_cast_inverse.test
new file mode 100644
index 0000000..dae835c
--- /dev/null
+++ b/petascope/test/testcases-wcps/06-just_cast_inverse.test
@@ -0,0 +1 @@
+for c in ( rgb ) return encode( ((char)255 - c.red)[x(50:150),y(50:150)], "jpeg" )
diff --git a/petascope/test/testcases-wcps/06-just_cast_inverse.xml b/petascope/test/testcases-wcps/06-just_cast_inverse.xml
new file mode 100644
index 0000000..696d3c8
--- /dev/null
+++ b/petascope/test/testcases-wcps/06-just_cast_inverse.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+<query><xmlSyntax><coverageIterator><iteratorVar>c</iteratorVar><coverageName>rgb</coverageName></coverageIterator><encode store="false"><trim><cast><minus><numericConstant>255</numericConstant><fieldSelect><coverage>c</coverage><field><name>red</name></field></fieldSelect></minus><type>char</type></cast><axis>x</axis><lowerBound><numericConstant>50</numericConstant></lowerBound><upperBound><numericConstant>150</numericConstant></upperBound><axis>y</axis><lowerBound><numericConstant>50</numericConstant></lowerBound><upperBound><numericConstant>150</numericConstant></upperBound></trim><format>jpeg</format></encode></xmlSyntax></query></ProcessCoveragesRequest> \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/07-just_slice.rasql b/petascope/test/testcases-wcps/07-just_slice.rasql
new file mode 100644
index 0000000..072e83b
--- /dev/null
+++ b/petascope/test/testcases-wcps/07-just_slice.rasql
@@ -0,0 +1 @@
+select jpeg(m[*:*,100,*:*]) from Modis AS m \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/07-just_slice.test b/petascope/test/testcases-wcps/07-just_slice.test
new file mode 100644
index 0000000..b1fa8fd
--- /dev/null
+++ b/petascope/test/testcases-wcps/07-just_slice.test
@@ -0,0 +1 @@
+for m in ( Modis ) return encode( slice( m, {x(100)} ), "jpeg" )
diff --git a/petascope/test/testcases-wcps/07-just_slice.xml b/petascope/test/testcases-wcps/07-just_slice.xml
new file mode 100644
index 0000000..7a45467
--- /dev/null
+++ b/petascope/test/testcases-wcps/07-just_slice.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+<query><xmlSyntax><coverageIterator><iteratorVar>m</iteratorVar><coverageName>Modis</coverageName></coverageIterator><encode store="false"><slice><coverage>m</coverage><axis>x</axis><slicingPosition><numericConstant>100</numericConstant></slicingPosition></slice><format>jpeg</format></encode></xmlSyntax></query></ProcessCoveragesRequest> \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/08-just_encode_field.rasql b/petascope/test/testcases-wcps/08-just_encode_field.rasql
new file mode 100644
index 0000000..1a198f4
--- /dev/null
+++ b/petascope/test/testcases-wcps/08-just_encode_field.rasql
@@ -0,0 +1 @@
+select jpeg((m).red) from NIR AS m \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/08-just_encode_field.test b/petascope/test/testcases-wcps/08-just_encode_field.test
new file mode 100644
index 0000000..e5ef4dc
--- /dev/null
+++ b/petascope/test/testcases-wcps/08-just_encode_field.test
@@ -0,0 +1 @@
+for m in ( NIR ) return encode( m.red, "jpeg" )
diff --git a/petascope/test/testcases-wcps/08-just_encode_field.xml b/petascope/test/testcases-wcps/08-just_encode_field.xml
new file mode 100644
index 0000000..60d9750
--- /dev/null
+++ b/petascope/test/testcases-wcps/08-just_encode_field.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+<query><xmlSyntax><coverageIterator><iteratorVar>m</iteratorVar><coverageName>NIR</coverageName></coverageIterator><encode store="false"><fieldSelect><coverage>m</coverage><field><name>red</name></field></fieldSelect><format>jpeg</format></encode></xmlSyntax></query></ProcessCoveragesRequest> \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/09-just_log.rasql b/petascope/test/testcases-wcps/09-just_log.rasql
new file mode 100644
index 0000000..b9a1ab0
--- /dev/null
+++ b/petascope/test/testcases-wcps/09-just_log.rasql
@@ -0,0 +1 @@
+select jpeg(log((s).2)) from rgb AS s \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/09-just_log.test b/petascope/test/testcases-wcps/09-just_log.test
new file mode 100644
index 0000000..15110d7
--- /dev/null
+++ b/petascope/test/testcases-wcps/09-just_log.test
@@ -0,0 +1 @@
+for s in ( rgb ) return encode( log(s.2), "jpeg" )
diff --git a/petascope/test/testcases-wcps/09-just_log.xml b/petascope/test/testcases-wcps/09-just_log.xml
new file mode 100644
index 0000000..13dc6e0
--- /dev/null
+++ b/petascope/test/testcases-wcps/09-just_log.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+<query><xmlSyntax><coverageIterator><iteratorVar>s</iteratorVar><coverageName>rgb</coverageName></coverageIterator><encode store="false"><log><fieldSelect><coverage>s</coverage><field><name>2</name></field></fieldSelect></log><format>jpeg</format></encode></xmlSyntax></query></ProcessCoveragesRequest> \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/10-just_field_difference.rasql b/petascope/test/testcases-wcps/10-just_field_difference.rasql
new file mode 100644
index 0000000..e5492c7
--- /dev/null
+++ b/petascope/test/testcases-wcps/10-just_field_difference.rasql
@@ -0,0 +1 @@
+select jpeg((((s).0)-((s).1))) from rgb AS s \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/10-just_field_difference.test b/petascope/test/testcases-wcps/10-just_field_difference.test
new file mode 100644
index 0000000..cf7b3ff
--- /dev/null
+++ b/petascope/test/testcases-wcps/10-just_field_difference.test
@@ -0,0 +1 @@
+for s in ( rgb ) return encode( s.0 - s.1, "jpeg" )
diff --git a/petascope/test/testcases-wcps/10-just_field_difference.xml b/petascope/test/testcases-wcps/10-just_field_difference.xml
new file mode 100644
index 0000000..a9dfbea
--- /dev/null
+++ b/petascope/test/testcases-wcps/10-just_field_difference.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+<query><xmlSyntax><coverageIterator><iteratorVar>s</iteratorVar><coverageName>rgb</coverageName></coverageIterator><encode store="false"><minus><fieldSelect><coverage>s</coverage><field><name>0</name></field></fieldSelect><fieldSelect><coverage>s</coverage><field><name>1</name></field></fieldSelect></minus><format>jpeg</format></encode></xmlSyntax></query></ProcessCoveragesRequest> \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/11_vegetation_index_computation.rasql b/petascope/test/testcases-wcps/11_vegetation_index_computation.rasql
new file mode 100644
index 0000000..b331c0c
--- /dev/null
+++ b/petascope/test/testcases-wcps/11_vegetation_index_computation.rasql
@@ -0,0 +1 @@
+select jpeg((char)((((((s).0)-((s).1)))/((((s).0)+((s).1)))))) from rgb AS s \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/11_vegetation_index_computation.test b/petascope/test/testcases-wcps/11_vegetation_index_computation.test
new file mode 100644
index 0000000..e8161b8
--- /dev/null
+++ b/petascope/test/testcases-wcps/11_vegetation_index_computation.test
@@ -0,0 +1 @@
+for s in ( rgb ) return encode((char) (s.0 - s.1)/(s.0 + s.1), "jpeg" )
diff --git a/petascope/test/testcases-wcps/11_vegetation_index_computation.xml b/petascope/test/testcases-wcps/11_vegetation_index_computation.xml
new file mode 100644
index 0000000..80b5430
--- /dev/null
+++ b/petascope/test/testcases-wcps/11_vegetation_index_computation.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+<query><xmlSyntax><coverageIterator><iteratorVar>s</iteratorVar><coverageName>rgb</coverageName></coverageIterator><encode store="false"><cast><div><minus><fieldSelect><coverage>s</coverage><field><name>0</name></field></fieldSelect><fieldSelect><coverage>s</coverage><field><name>1</name></field></fieldSelect></minus><plus><fieldSelect><coverage>s</coverage><field><name>0</name></field></fieldSelect><fieldSelect><coverage>s</coverage><field><name>1</name></field></fieldSelect></plus></div><type>char</type></cast><format>jpeg</format></encode></xmlSyntax></query></ProcessCoveragesRequest> \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/12-vegetation_index.rasql b/petascope/test/testcases-wcps/12-vegetation_index.rasql
new file mode 100644
index 0000000..8cca981
--- /dev/null
+++ b/petascope/test/testcases-wcps/12-vegetation_index.rasql
@@ -0,0 +1 @@
+select jpeg((((((((s).0)-((s).1)))/((((s).0)+((s).1)))))>(0.1))) from rgb AS s \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/12-vegetation_index.test b/petascope/test/testcases-wcps/12-vegetation_index.test
new file mode 100644
index 0000000..3bdd5e2
--- /dev/null
+++ b/petascope/test/testcases-wcps/12-vegetation_index.test
@@ -0,0 +1 @@
+for s in ( rgb ) return encode( ((s.0-s.1)/(s.0+s.1)) > 0.1, "jpeg" )
diff --git a/petascope/test/testcases-wcps/12-vegetation_index.xml b/petascope/test/testcases-wcps/12-vegetation_index.xml
new file mode 100644
index 0000000..d6b30fb
--- /dev/null
+++ b/petascope/test/testcases-wcps/12-vegetation_index.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+<query><xmlSyntax><coverageIterator><iteratorVar>s</iteratorVar><coverageName>rgb</coverageName></coverageIterator><encode store="false"><greaterThan><div><minus><fieldSelect><coverage>s</coverage><field><name>0</name></field></fieldSelect><fieldSelect><coverage>s</coverage><field><name>1</name></field></fieldSelect></minus><plus><fieldSelect><coverage>s</coverage><field><name>0</name></field></fieldSelect><fieldSelect><coverage>s</coverage><field><name>1</name></field></fieldSelect></plus></div><numericConstant>0.1</numericConstant></greaterThan><format>jpeg</format></encode></xmlSyntax></query></ProcessCoveragesRequest> \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/13-just_encode_three_coverages.rasql b/petascope/test/testcases-wcps/13-just_encode_three_coverages.rasql
new file mode 100644
index 0000000..0bcbcae
--- /dev/null
+++ b/petascope/test/testcases-wcps/13-just_encode_three_coverages.rasql
@@ -0,0 +1 @@
+select jpeg(s) from rgb AS s \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/13-just_encode_three_coverages.test b/petascope/test/testcases-wcps/13-just_encode_three_coverages.test
new file mode 100644
index 0000000..302a4b0
--- /dev/null
+++ b/petascope/test/testcases-wcps/13-just_encode_three_coverages.test
@@ -0,0 +1 @@
+for s in ( rgb, rgb, rgb ) return encode( s, "jpeg" )
diff --git a/petascope/test/testcases-wcps/13-just_encode_three_coverages.xml b/petascope/test/testcases-wcps/13-just_encode_three_coverages.xml
new file mode 100644
index 0000000..665a965
--- /dev/null
+++ b/petascope/test/testcases-wcps/13-just_encode_three_coverages.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+<query><xmlSyntax><coverageIterator><iteratorVar>s</iteratorVar><coverageName>rgb</coverageName><coverageName>rgb</coverageName><coverageName>rgb</coverageName></coverageIterator><encode store="false"><coverage>s</coverage><format>jpeg</format></encode></xmlSyntax></query></ProcessCoveragesRequest> \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/14_count_vegetation_cells.rasql b/petascope/test/testcases-wcps/14_count_vegetation_cells.rasql
new file mode 100644
index 0000000..1fa9494
--- /dev/null
+++ b/petascope/test/testcases-wcps/14_count_vegetation_cells.rasql
@@ -0,0 +1 @@
+select count_cells((((((((s).0)+((s).1)))/((((s).0)-((s).1)))))>=(0))) from rgb AS s \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/14_count_vegetation_cells.test b/petascope/test/testcases-wcps/14_count_vegetation_cells.test
new file mode 100644
index 0000000..384aaf4
--- /dev/null
+++ b/petascope/test/testcases-wcps/14_count_vegetation_cells.test
@@ -0,0 +1,2 @@
+for s in ( rgb, rgb, rgb ) return
+ count( (s.0+s.1)/(s.0-s.1) >= 0) \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/14_count_vegetation_cells.xml b/petascope/test/testcases-wcps/14_count_vegetation_cells.xml
new file mode 100644
index 0000000..e13f150
--- /dev/null
+++ b/petascope/test/testcases-wcps/14_count_vegetation_cells.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+<query><xmlSyntax><coverageIterator><iteratorVar>s</iteratorVar><coverageName>rgb</coverageName><coverageName>rgb</coverageName><coverageName>rgb</coverageName></coverageIterator><count><greaterOrEqual><div><plus><fieldSelect><coverage>s</coverage><field><name>0</name></field></fieldSelect><fieldSelect><coverage>s</coverage><field><name>1</name></field></fieldSelect></plus><minus><fieldSelect><coverage>s</coverage><field><name>0</name></field></fieldSelect><fieldSelect><coverage>s</coverage><field><name>1</name></field></fieldSelect></minus></div><numericConstant>0</numericConstant></greaterOrEqual></count></xmlSyntax></query></ProcessCoveragesRequest> \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/15-construct_simple_gray_gradient.rasql b/petascope/test/testcases-wcps/15-construct_simple_gray_gradient.rasql
new file mode 100644
index 0000000..30244ca
--- /dev/null
+++ b/petascope/test/testcases-wcps/15-construct_simple_gray_gradient.rasql
@@ -0,0 +1 @@
+select jpeg((char)(marray ii in [51:150, 0:99] values ii[0])) from rgb AS c \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/15-construct_simple_gray_gradient.test b/petascope/test/testcases-wcps/15-construct_simple_gray_gradient.test
new file mode 100644
index 0000000..655dbfa
--- /dev/null
+++ b/petascope/test/testcases-wcps/15-construct_simple_gray_gradient.test
@@ -0,0 +1,8 @@
+for c in ( rgb )
+return encode(
+ (char)
+ coverage greyImage
+ over $first x(51:150),
+ $second y(0:99)
+ values $first
+, "jpeg" ) \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/15-construct_simple_gray_gradient.xml b/petascope/test/testcases-wcps/15-construct_simple_gray_gradient.xml
new file mode 100644
index 0000000..ba88b24
--- /dev/null
+++ b/petascope/test/testcases-wcps/15-construct_simple_gray_gradient.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+<query><xmlSyntax><coverageIterator><iteratorVar>c</iteratorVar><coverageName>rgb</coverageName></coverageIterator><encode store="false"><cast><construct><name>greyImage</name><axisIterator><iteratorVar>first</iteratorVar><axis>x</axis><numericConstant>51</numericConstant><numericConstant>150</numericConstant></axisIterator><axisIterator><iteratorVar>second</iteratorVar><axis>y</axis><numericConstant>0</numericConstant><numericConstant>99</numericConstant></axisIterator><variableRef>first</variableRef></construct><type>char</type></cast><format>jpeg</format></encode></xmlSyntax></query></ProcessCoveragesRequest> \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/16-simple_histogram.rasql b/petascope/test/testcases-wcps/16-simple_histogram.rasql
new file mode 100644
index 0000000..5176c0b
--- /dev/null
+++ b/petascope/test/testcases-wcps/16-simple_histogram.rasql
@@ -0,0 +1 @@
+select csv(marray ii in [0:255] values count_cells(((c)=(ii[0])))) from mr AS c \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/16-simple_histogram.test b/petascope/test/testcases-wcps/16-simple_histogram.test
new file mode 100644
index 0000000..472329e
--- /dev/null
+++ b/petascope/test/testcases-wcps/16-simple_histogram.test
@@ -0,0 +1,6 @@
+for c in ( mr )
+return encode(
+ coverage histogram
+ over $n x(0:255)
+ values count( c = $n )
+, "csv" ) \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/16-simple_histogram.xml b/petascope/test/testcases-wcps/16-simple_histogram.xml
new file mode 100644
index 0000000..273d639
--- /dev/null
+++ b/petascope/test/testcases-wcps/16-simple_histogram.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+<query><xmlSyntax><coverageIterator><iteratorVar>c</iteratorVar><coverageName>mr</coverageName></coverageIterator><encode store="false"><construct><name>histogram</name><axisIterator><iteratorVar>n</iteratorVar><axis>x</axis><numericConstant>0</numericConstant><numericConstant>255</numericConstant></axisIterator><count><equals><coverage>c</coverage><variableRef>n</variableRef></equals></count></construct><format>csv</format></encode></xmlSyntax></query></ProcessCoveragesRequest> \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/17-climate_over_earth.rasql b/petascope/test/testcases-wcps/17-climate_over_earth.rasql
new file mode 100644
index 0000000..00bd08d
--- /dev/null
+++ b/petascope/test/testcases-wcps/17-climate_over_earth.rasql
@@ -0,0 +1 @@
+select png((char)(((clouds[*:*,*:*,0])*(mask[*:*,*:*,0])))) from climate_earth AS mask, climate_clouds AS clouds \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/17-climate_over_earth.test b/petascope/test/testcases-wcps/17-climate_over_earth.test
new file mode 100644
index 0000000..d51df7a
--- /dev/null
+++ b/petascope/test/testcases-wcps/17-climate_over_earth.test
@@ -0,0 +1,5 @@
+for clouds in ( climate_clouds ),
+ mask in ( climate_earth )
+return encode(
+ (char) clouds[ t(0) ] * mask[ t(0) ]
+, "png" ) \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/17-climate_over_earth.xml b/petascope/test/testcases-wcps/17-climate_over_earth.xml
new file mode 100644
index 0000000..12d9909
--- /dev/null
+++ b/petascope/test/testcases-wcps/17-climate_over_earth.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+<query><xmlSyntax><coverageIterator><iteratorVar>mask</iteratorVar><coverageName>climate_earth</coverageName></coverageIterator><coverageIterator><iteratorVar>clouds</iteratorVar><coverageName>climate_clouds</coverageName></coverageIterator><encode store="false"><cast><mult><slice><coverage>clouds</coverage><axis>t</axis><slicingPosition><numericConstant>0</numericConstant></slicingPosition></slice><slice><coverage>mask</coverage><axis>t</axis><slicingPosition><numericConstant>0</numericConstant></slicingPosition></slice></mult><type>char</type></cast><format>png</format></encode></xmlSyntax></query></ProcessCoveragesRequest> \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/18-climate_over_water.rasql b/petascope/test/testcases-wcps/18-climate_over_water.rasql
new file mode 100644
index 0000000..234cc47
--- /dev/null
+++ b/petascope/test/testcases-wcps/18-climate_over_water.rasql
@@ -0,0 +1 @@
+select png((char)(((clouds[*:*,*:*,0])*(((mask[*:*,*:*,0])=(0)))))) from climate_earth AS mask, climate_clouds AS clouds \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/18-climate_over_water.test b/petascope/test/testcases-wcps/18-climate_over_water.test
new file mode 100644
index 0000000..a0047bf
--- /dev/null
+++ b/petascope/test/testcases-wcps/18-climate_over_water.test
@@ -0,0 +1,5 @@
+for clouds in ( climate_clouds),
+ mask in ( climate_earth)
+return encode(
+ (char) clouds[ t(0) ] * (mask[ t(0) ] = 0)
+, "png" )
diff --git a/petascope/test/testcases-wcps/18-climate_over_water.xml b/petascope/test/testcases-wcps/18-climate_over_water.xml
new file mode 100644
index 0000000..41a3422
--- /dev/null
+++ b/petascope/test/testcases-wcps/18-climate_over_water.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+<query><xmlSyntax><coverageIterator><iteratorVar>mask</iteratorVar><coverageName>climate_earth</coverageName></coverageIterator><coverageIterator><iteratorVar>clouds</iteratorVar><coverageName>climate_clouds</coverageName></coverageIterator><encode store="false"><cast><mult><slice><coverage>clouds</coverage><axis>t</axis><slicingPosition><numericConstant>0</numericConstant></slicingPosition></slice><equals><slice><coverage>mask</coverage><axis>t</axis><slicingPosition><numericConstant>0</numericConstant></slicingPosition></slice><numericConstant>0</numericConstant></equals></mult><type>char</type></cast><format>png</format></encode></xmlSyntax></query></ProcessCoveragesRequest> \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/19-just_sinus.rasql b/petascope/test/testcases-wcps/19-just_sinus.rasql
new file mode 100644
index 0000000..5738ca3
--- /dev/null
+++ b/petascope/test/testcases-wcps/19-just_sinus.rasql
@@ -0,0 +1 @@
+select jpeg(sin((c).1)) from rgb AS c \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/19-just_sinus.test b/petascope/test/testcases-wcps/19-just_sinus.test
new file mode 100644
index 0000000..3dcffb8
--- /dev/null
+++ b/petascope/test/testcases-wcps/19-just_sinus.test
@@ -0,0 +1 @@
+for c in (rgb) return encode(sin(c.1), "jpeg")
diff --git a/petascope/test/testcases-wcps/19-just_sinus.xml b/petascope/test/testcases-wcps/19-just_sinus.xml
new file mode 100644
index 0000000..3862f86
--- /dev/null
+++ b/petascope/test/testcases-wcps/19-just_sinus.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+<query><xmlSyntax><coverageIterator><iteratorVar>c</iteratorVar><coverageName>rgb</coverageName></coverageIterator><encode store="false"><sin><fieldSelect><coverage>c</coverage><field><name>1</name></field></fieldSelect></sin><format>jpeg</format></encode></xmlSyntax></query></ProcessCoveragesRequest> \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/20-just_tangent.rasql b/petascope/test/testcases-wcps/20-just_tangent.rasql
new file mode 100644
index 0000000..d3724d4
--- /dev/null
+++ b/petascope/test/testcases-wcps/20-just_tangent.rasql
@@ -0,0 +1 @@
+select jpeg(tan((c).1)) from rgb AS c \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/20-just_tangent.test b/petascope/test/testcases-wcps/20-just_tangent.test
new file mode 100644
index 0000000..77946ad
--- /dev/null
+++ b/petascope/test/testcases-wcps/20-just_tangent.test
@@ -0,0 +1 @@
+for c in (rgb) return encode(tan(c.1), "jpeg")
diff --git a/petascope/test/testcases-wcps/20-just_tangent.xml b/petascope/test/testcases-wcps/20-just_tangent.xml
new file mode 100644
index 0000000..db8b3db
--- /dev/null
+++ b/petascope/test/testcases-wcps/20-just_tangent.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+<query><xmlSyntax><coverageIterator><iteratorVar>c</iteratorVar><coverageName>rgb</coverageName></coverageIterator><encode store="false"><tan><fieldSelect><coverage>c</coverage><field><name>1</name></field></fieldSelect></tan><format>jpeg</format></encode></xmlSyntax></query></ProcessCoveragesRequest> \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/21-just_exponent.rasql b/petascope/test/testcases-wcps/21-just_exponent.rasql
new file mode 100644
index 0000000..b771d4f
--- /dev/null
+++ b/petascope/test/testcases-wcps/21-just_exponent.rasql
@@ -0,0 +1 @@
+select jpeg(exp((((c).1)/(100)))) from rgb AS c \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/21-just_exponent.test b/petascope/test/testcases-wcps/21-just_exponent.test
new file mode 100644
index 0000000..49f1cde
--- /dev/null
+++ b/petascope/test/testcases-wcps/21-just_exponent.test
@@ -0,0 +1 @@
+for c in (rgb) return encode(exp(c.1/100), "jpeg")
diff --git a/petascope/test/testcases-wcps/21-just_exponent.xml b/petascope/test/testcases-wcps/21-just_exponent.xml
new file mode 100644
index 0000000..9ad7818
--- /dev/null
+++ b/petascope/test/testcases-wcps/21-just_exponent.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+<query><xmlSyntax><coverageIterator><iteratorVar>c</iteratorVar><coverageName>rgb</coverageName></coverageIterator><encode store="false"><exp><div><fieldSelect><coverage>c</coverage><field><name>1</name></field></fieldSelect><numericConstant>100</numericConstant></div></exp><format>jpeg</format></encode></xmlSyntax></query></ProcessCoveragesRequest> \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/22-just_max_double.rasql b/petascope/test/testcases-wcps/22-just_max_double.rasql
new file mode 100644
index 0000000..2a5ad21
--- /dev/null
+++ b/petascope/test/testcases-wcps/22-just_max_double.rasql
@@ -0,0 +1 @@
+select max_cells((double)((c).2)) from rgb AS c \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/22-just_max_double.test b/petascope/test/testcases-wcps/22-just_max_double.test
new file mode 100644
index 0000000..42a9215
--- /dev/null
+++ b/petascope/test/testcases-wcps/22-just_max_double.test
@@ -0,0 +1 @@
+for c in ( rgb ) return max((double)c.2)
diff --git a/petascope/test/testcases-wcps/22-just_max_double.xml b/petascope/test/testcases-wcps/22-just_max_double.xml
new file mode 100644
index 0000000..461d8d2
--- /dev/null
+++ b/petascope/test/testcases-wcps/22-just_max_double.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+<query><xmlSyntax><coverageIterator><iteratorVar>c</iteratorVar><coverageName>rgb</coverageName></coverageIterator><max><cast><fieldSelect><coverage>c</coverage><field><name>2</name></field></fieldSelect><type>double</type></cast></max></xmlSyntax></query></ProcessCoveragesRequest> \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/23_shown_only_green_areas.rasql b/petascope/test/testcases-wcps/23_shown_only_green_areas.rasql
new file mode 100644
index 0000000..db67c29
--- /dev/null
+++ b/petascope/test/testcases-wcps/23_shown_only_green_areas.rasql
@@ -0,0 +1 @@
+select jpeg(((r)*((((((((r).green)>(130)))and((((r).red)<(110)))))and((((r).blue)<(140))))))) from rgb AS r \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/23_shown_only_green_areas.test b/petascope/test/testcases-wcps/23_shown_only_green_areas.test
new file mode 100644
index 0000000..9a9c78e
--- /dev/null
+++ b/petascope/test/testcases-wcps/23_shown_only_green_areas.test
@@ -0,0 +1,4 @@
+for r in (rgb)
+return encode(
+ r * ((r.green > 130) and (r.red < 110) and (r.blue < 140))
+ , "jpeg") \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/23_shown_only_green_areas.xml b/petascope/test/testcases-wcps/23_shown_only_green_areas.xml
new file mode 100644
index 0000000..1e1d521
--- /dev/null
+++ b/petascope/test/testcases-wcps/23_shown_only_green_areas.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+<query><xmlSyntax><coverageIterator><iteratorVar>r</iteratorVar><coverageName>rgb</coverageName></coverageIterator><encode store="false"><mult><coverage>r</coverage><and><and><greaterThan><fieldSelect><coverage>r</coverage><field><name>green</name></field></fieldSelect><numericConstant>130</numericConstant></greaterThan><lessThan><fieldSelect><coverage>r</coverage><field><name>red</name></field></fieldSelect><numericConstant>110</numericConstant></lessThan></and><lessThan><fieldSelect><coverage>r</coverage><field><name>blue</name></field></fieldSelect><numericConstant>140</numericConstant></lessThan></and></mult><format>jpeg</format></encode></xmlSyntax></query></ProcessCoveragesRequest> \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/24-condense_coverage_one_var.rasql b/petascope/test/testcases-wcps/24-condense_coverage_one_var.rasql
new file mode 100644
index 0000000..39fb5e5
--- /dev/null
+++ b/petascope/test/testcases-wcps/24-condense_coverage_one_var.rasql
@@ -0,0 +1 @@
+select condense + over ii in [1:10] using ((ii[0])*((a[ii[0],10]).red)) from rgb AS a \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/24-condense_coverage_one_var.test b/petascope/test/testcases-wcps/24-condense_coverage_one_var.test
new file mode 100644
index 0000000..7882156
--- /dev/null
+++ b/petascope/test/testcases-wcps/24-condense_coverage_one_var.test
@@ -0,0 +1,4 @@
+for a in (rgb) return
+ condense +
+ over $x x(1:10)
+ using $x * (a[x($x), y(10)]).red \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/24-condense_coverage_one_var.xml b/petascope/test/testcases-wcps/24-condense_coverage_one_var.xml
new file mode 100644
index 0000000..360beda
--- /dev/null
+++ b/petascope/test/testcases-wcps/24-condense_coverage_one_var.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+<query><xmlSyntax><coverageIterator><iteratorVar>a</iteratorVar><coverageName>rgb</coverageName></coverageIterator><condense><opPlus/><iterator><iteratorVar>x</iteratorVar><axis>x</axis><numericConstant>1</numericConstant><numericConstant>10</numericConstant></iterator><mult><variableRef>x</variableRef><fieldSelect><slice><coverage>a</coverage><axis>x</axis><slicingPosition><variableRef>x</variableRef></slicingPosition><axis>y</axis><slicingPosition><numericConstant>10</numericConstant></slicingPosition></slice><field><name>red</name></field></fieldSelect></mult></condense></xmlSyntax></query></ProcessCoveragesRequest> \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/25-condense_field_two_vars.rasql b/petascope/test/testcases-wcps/25-condense_field_two_vars.rasql
new file mode 100644
index 0000000..692d925
--- /dev/null
+++ b/petascope/test/testcases-wcps/25-condense_field_two_vars.rasql
@@ -0,0 +1 @@
+select condense + over ii in [1:10, 25:75] using ((ii[0])*((a[ii[0],ii[1]]).red)) from rgb AS a \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/25-condense_field_two_vars.test b/petascope/test/testcases-wcps/25-condense_field_two_vars.test
new file mode 100644
index 0000000..93da0d1
--- /dev/null
+++ b/petascope/test/testcases-wcps/25-condense_field_two_vars.test
@@ -0,0 +1,5 @@
+for a in (rgb) return
+ condense +
+ over $kx x (1:10),
+ $ky y (25:75)
+ using $kx * (a[x($kx),y($ky)]).red
diff --git a/petascope/test/testcases-wcps/25-condense_field_two_vars.xml b/petascope/test/testcases-wcps/25-condense_field_two_vars.xml
new file mode 100644
index 0000000..15219ed
--- /dev/null
+++ b/petascope/test/testcases-wcps/25-condense_field_two_vars.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+<query><xmlSyntax><coverageIterator><iteratorVar>a</iteratorVar><coverageName>rgb</coverageName></coverageIterator><condense><opPlus/><iterator><iteratorVar>kx</iteratorVar><axis>x</axis><numericConstant>1</numericConstant><numericConstant>10</numericConstant></iterator><iterator><iteratorVar>ky</iteratorVar><axis>y</axis><numericConstant>25</numericConstant><numericConstant>75</numericConstant></iterator><mult><variableRef>kx</variableRef><fieldSelect><slice><coverage>a</coverage><axis>x</axis><slicingPosition><variableRef>kx</variableRef></slicingPosition><axis>y</axis><slicingPosition><variableRef>ky</variableRef></slicingPosition></slice><field><name>red</name></field></fieldSelect></mult></condense></xmlSyntax></query></ProcessCoveragesRequest> \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/26-constant_coverage.rasql b/petascope/test/testcases-wcps/26-constant_coverage.rasql
new file mode 100644
index 0000000..c44e5d2
--- /dev/null
+++ b/petascope/test/testcases-wcps/26-constant_coverage.rasql
@@ -0,0 +1 @@
+select csv(< [0:1] 0, 1>) from rgb AS c \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/26-constant_coverage.test b/petascope/test/testcases-wcps/26-constant_coverage.test
new file mode 100644
index 0000000..1325f49
--- /dev/null
+++ b/petascope/test/testcases-wcps/26-constant_coverage.test
@@ -0,0 +1,6 @@
+for c in (rgb) return
+encode(
+ coverage const
+ over $px x(0:1)
+ value list <0;1>
+, "csv") \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/26-constant_coverage.xml b/petascope/test/testcases-wcps/26-constant_coverage.xml
new file mode 100644
index 0000000..d2f327c
--- /dev/null
+++ b/petascope/test/testcases-wcps/26-constant_coverage.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+<query><xmlSyntax><coverageIterator><iteratorVar>c</iteratorVar><coverageName>rgb</coverageName></coverageIterator><encode store="false"><const><name>const</name><axisIterator><iteratorVar>px</iteratorVar><axis>x</axis><numericConstant>0</numericConstant><numericConstant>1</numericConstant></axisIterator><value>0</value><value>1</value></const><format>csv</format></encode></xmlSyntax></query></ProcessCoveragesRequest> \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/27-construct_boring_histogram.rasql b/petascope/test/testcases-wcps/27-construct_boring_histogram.rasql
new file mode 100644
index 0000000..7402078
--- /dev/null
+++ b/petascope/test/testcases-wcps/27-construct_boring_histogram.rasql
@@ -0,0 +1 @@
+select csv(marray ii in [0:20] values condense + over ij in [0:20, 0:20] using 1) from mr AS c \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/27-construct_boring_histogram.test b/petascope/test/testcases-wcps/27-construct_boring_histogram.test
new file mode 100644
index 0000000..4359686
--- /dev/null
+++ b/petascope/test/testcases-wcps/27-construct_boring_histogram.test
@@ -0,0 +1,9 @@
+for c in ( mr )
+return
+encode( coverage histogram
+ over $n x(0:20)
+ values condense +
+ over $px x(0:20),
+ $py y(0:20)
+ using 1,
+ "csv" )
diff --git a/petascope/test/testcases-wcps/27-construct_boring_histogram.xml b/petascope/test/testcases-wcps/27-construct_boring_histogram.xml
new file mode 100644
index 0000000..ebe3573
--- /dev/null
+++ b/petascope/test/testcases-wcps/27-construct_boring_histogram.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+<query><xmlSyntax><coverageIterator><iteratorVar>c</iteratorVar><coverageName>mr</coverageName></coverageIterator><encode store="false"><construct><name>histogram</name><axisIterator><iteratorVar>n</iteratorVar><axis>x</axis><numericConstant>0</numericConstant><numericConstant>20</numericConstant></axisIterator><condense><opPlus/><iterator><iteratorVar>px</iteratorVar><axis>x</axis><numericConstant>0</numericConstant><numericConstant>20</numericConstant></iterator><iterator><iteratorVar>py</iteratorVar><axis>y</axis><numericConstant>0</numericConstant><numericConstant>20</numericConstant></iterator><numericConstant>1</numericConstant></condense></construct><format>csv</format></encode></xmlSyntax></query></ProcessCoveragesRequest> \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/28-construct_histogram_range_condition.rasql b/petascope/test/testcases-wcps/28-construct_histogram_range_condition.rasql
new file mode 100644
index 0000000..c99a1d1
--- /dev/null
+++ b/petascope/test/testcases-wcps/28-construct_histogram_range_condition.rasql
@@ -0,0 +1 @@
+select csv(marray ii in [-20:20] values condense + over ij in [10:20, 10:20] using ((((c[ij[0],ij[1]])>((ii[0])-(1))))and(((c[ij[0],ij[1]])<=(ii[0]))))) from mr AS c \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/28-construct_histogram_range_condition.test b/petascope/test/testcases-wcps/28-construct_histogram_range_condition.test
new file mode 100644
index 0000000..5a31004
--- /dev/null
+++ b/petascope/test/testcases-wcps/28-construct_histogram_range_condition.test
@@ -0,0 +1,9 @@
+for c in ( mr )
+return
+encode( coverage histogram
+ over $n x(-20:20)
+ values condense +
+ over $px x(10:20),
+ $py y(10:20)
+ using c[ x($px), y($py) ]>$n - 1 and c[ x($px), y($py) ]<=$n,
+ "csv" )
diff --git a/petascope/test/testcases-wcps/28-construct_histogram_range_condition.xml b/petascope/test/testcases-wcps/28-construct_histogram_range_condition.xml
new file mode 100644
index 0000000..694770a
--- /dev/null
+++ b/petascope/test/testcases-wcps/28-construct_histogram_range_condition.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+<query><xmlSyntax><coverageIterator><iteratorVar>c</iteratorVar><coverageName>mr</coverageName></coverageIterator><encode store="false"><construct><name>histogram</name><axisIterator><iteratorVar>n</iteratorVar><axis>x</axis><numericConstant>-20</numericConstant><numericConstant>20</numericConstant></axisIterator><condense><opPlus/><iterator><iteratorVar>px</iteratorVar><axis>x</axis><numericConstant>10</numericConstant><numericConstant>20</numericConstant></iterator><iterator><iteratorVar>py</iteratorVar><axis>y</axis><numericConstant>10</numericConstant><numericConstant>20</numericConstant></iterator><and><greaterThan><slice><coverage>c</coverage><axis>x</axis><slicingPosition><variableRef>px</variableRef></slicingPosition><axis>y</axis><slicingPosition><variableRef>py</variableRef></slicingPosition></slice><numericMinus><variableRef>n</variableRef><numericConstant>1</numericConstant></numericMinus></greaterThan><lessOrEqual><slice><coverage>c</coverage><axis>x</axis><slicingPosition><variableRef>px</variableRef></slicingPosition><axis>y</axis><slicingPosition><variableRef>py</variableRef></slicingPosition></slice><variableRef>n</variableRef></lessOrEqual></and></condense></construct><format>csv</format></encode></xmlSyntax></query></ProcessCoveragesRequest> \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/29-filter_image(lines).rasql b/petascope/test/testcases-wcps/29-filter_image(lines).rasql
new file mode 100644
index 0000000..3fc5049
--- /dev/null
+++ b/petascope/test/testcases-wcps/29-filter_image(lines).rasql
@@ -0,0 +1 @@
+select jpeg((char)(marray ii in [10:240, 10:230] values condense + over ij in [-1:1, -1:1] using ((< [-1:1, -1:1] 1, 1, 1, 0, 0, 0, -1, -1, -1>[ij[0],ij[1]])*((c[(ii[0])+(ij[0]),(ii[1])+(ij[1])]).red)))) from rgb AS c \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/29-filter_image(lines).test b/petascope/test/testcases-wcps/29-filter_image(lines).test
new file mode 100644
index 0000000..15ecb28
--- /dev/null
+++ b/petascope/test/testcases-wcps/29-filter_image(lines).test
@@ -0,0 +1,17 @@
+for c in (rgb) return encode((char)
+ coverage filteredImage
+ over $px x(10:240),
+ $py y(10:230)
+ values
+ condense +
+ over $kx x(-1:1),
+ $ky y(-1:1)
+ using
+ (coverage kernel
+ over $x x (-1:1),
+ $y y(-1:1)
+ value list < 1; 1; 1; 0; 0; 0; -1; -1; -1 >
+ )[x($kx),y($ky)]
+ *
+ (c[x($px+$kx),y($py+$ky)]).red
+ , "jpeg") \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/29-filter_image(lines).xml b/petascope/test/testcases-wcps/29-filter_image(lines).xml
new file mode 100644
index 0000000..9fac44f
--- /dev/null
+++ b/petascope/test/testcases-wcps/29-filter_image(lines).xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+<query><xmlSyntax><coverageIterator><iteratorVar>c</iteratorVar><coverageName>rgb</coverageName></coverageIterator><encode store="false"><cast><construct><name>filteredImage</name><axisIterator><iteratorVar>px</iteratorVar><axis>x</axis><numericConstant>10</numericConstant><numericConstant>240</numericConstant></axisIterator><axisIterator><iteratorVar>py</iteratorVar><axis>y</axis><numericConstant>10</numericConstant><numericConstant>230</numericConstant></axisIterator><condense><opPlus/><iterator><iteratorVar>kx</iteratorVar><axis>x</axis><numericConstant>-1</numericConstant><numericConstant>1</numericConstant></iterator><iterator><iteratorVar>ky</iteratorVar><axis>y</axis><numericConstant>-1</numericConstant><numericConstant>1</numericConstant></iterator><mult><slice><const><name>kernel</name><axisIterator><iteratorVar>x</iteratorVar><axis>x</axis><numericConstant>-1</numericConstant><numericConstant>1</numericConstant></axisIterator><axisIterator><iteratorVar>y</iteratorVar><axis>y</axis><numericConstant>-1</numericConstant><numericConstant>1</numericConstant></axisIterator><value>1</value><value>1</value><value>1</value><value>0</value><value>0</value><value>0</value><value>-1</value><value>-1</value><value>-1</value></const><axis>x</axis><slicingPosition><variableRef>kx</variableRef></slicingPosition><axis>y</axis><slicingPosition><variableRef>ky</variableRef></slicingPosition></slice><fieldSelect><slice><coverage>c</coverage><axis>x</axis><slicingPosition><numericAdd><variableRef>px</variableRef><variableRef>kx</variableRef></numericAdd></slicingPosition><axis>y</axis><slicingPosition><numericAdd><variableRef>py</variableRef><variableRef>ky</variableRef></numericAdd></slicingPosition></slice><field><name>red</name></field></fieldSelect></mult></condense></construct><type>char</type></cast><format>jpeg</format></encode></xmlSyntax></query></ProcessCoveragesRequest> \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/30-construct_count.rasql b/petascope/test/testcases-wcps/30-construct_count.rasql
new file mode 100644
index 0000000..ad0bf3e
--- /dev/null
+++ b/petascope/test/testcases-wcps/30-construct_count.rasql
@@ -0,0 +1 @@
+select csv(marray ii in [0:2] values count_cells(((c)=(ii[0])))) from climate_clouds AS c \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/30-construct_count.test b/petascope/test/testcases-wcps/30-construct_count.test
new file mode 100644
index 0000000..8a3e440
--- /dev/null
+++ b/petascope/test/testcases-wcps/30-construct_count.test
@@ -0,0 +1,6 @@
+for c in ( climate_clouds )
+return encode(
+ coverage histogram
+ over $n x(0:2)
+ values count( c = $n )
+ , "csv" ) \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/30-construct_count.xml b/petascope/test/testcases-wcps/30-construct_count.xml
new file mode 100644
index 0000000..1d499f6
--- /dev/null
+++ b/petascope/test/testcases-wcps/30-construct_count.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+<query><xmlSyntax><coverageIterator><iteratorVar>c</iteratorVar><coverageName>climate_clouds</coverageName></coverageIterator><encode store="false"><construct><name>histogram</name><axisIterator><iteratorVar>n</iteratorVar><axis>x</axis><numericConstant>0</numericConstant><numericConstant>2</numericConstant></axisIterator><count><equals><coverage>c</coverage><variableRef>n</variableRef></equals></count></construct><format>csv</format></encode></xmlSyntax></query></ProcessCoveragesRequest> \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/31-Discrete_Fourier.rasql b/petascope/test/testcases-wcps/31-Discrete_Fourier.rasql
new file mode 100644
index 0000000..9b01f39
--- /dev/null
+++ b/petascope/test/testcases-wcps/31-Discrete_Fourier.rasql
@@ -0,0 +1 @@
+select jpeg(marray ii in [65:70, 65:70] values condense + over ij in [65:70, 65:70] using ((c[ij[0],ij[1]])*(cos((((-2)*((22.0)/(7.0)))*((((double)(((ij[0])*(ii[0]))/(((70)-(65))+(1))))+((double)(((ij[1])*(ii[1]))/(((70)-(65))+(1))))))))))) from rgb AS c \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/31-Discrete_Fourier.test b/petascope/test/testcases-wcps/31-Discrete_Fourier.test
new file mode 100644
index 0000000..8fbbc07
--- /dev/null
+++ b/petascope/test/testcases-wcps/31-Discrete_Fourier.test
@@ -0,0 +1,23 @@
+for c in (rgb) return
+encode(
+
+ coverage DFT
+ over $xx x(65:70),
+ $xy y(65:70)
+ values
+ condense +
+ over $ux x(65:70),
+ $uy y(65:70)
+ using
+ c[x($ux),y($uy)]
+ *
+ cos(
+ ( -2 * (22.0/7.0) )
+ *
+ (
+ ( (double) ($ux*$xx) / (70 - 65 + 1) )
+ +
+ ( (double) ($uy*$xy) / (70 - 65 + 1 ) )
+ )
+ )
+, "jpeg")
diff --git a/petascope/test/testcases-wcps/31-Discrete_Fourier.xml b/petascope/test/testcases-wcps/31-Discrete_Fourier.xml
new file mode 100644
index 0000000..95e491e
--- /dev/null
+++ b/petascope/test/testcases-wcps/31-Discrete_Fourier.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+<query><xmlSyntax><coverageIterator><iteratorVar>c</iteratorVar><coverageName>rgb</coverageName></coverageIterator><encode store="false"><construct><name>DFT</name><axisIterator><iteratorVar>xx</iteratorVar><axis>x</axis><numericConstant>65</numericConstant><numericConstant>70</numericConstant></axisIterator><axisIterator><iteratorVar>xy</iteratorVar><axis>y</axis><numericConstant>65</numericConstant><numericConstant>70</numericConstant></axisIterator><condense><opPlus/><iterator><iteratorVar>ux</iteratorVar><axis>x</axis><numericConstant>65</numericConstant><numericConstant>70</numericConstant></iterator><iterator><iteratorVar>uy</iteratorVar><axis>y</axis><numericConstant>65</numericConstant><numericConstant>70</numericConstant></iterator><mult><slice><coverage>c</coverage><axis>x</axis><slicingPosition><variableRef>ux</variableRef></slicingPosition><axis>y</axis><slicingPosition><variableRef>uy</variableRef></slicingPosition></slice><cos><mult><numericMult><numericConstant>-2</numericConstant><numericDiv><numericConstant>22.0</numericConstant><numericConstant>7.0</numericConstant></numericDiv></numericMult><plus><cast><numericDiv><numericMult><variableRef>ux</variableRef><variableRef>xx</variableRef></numericMult><numericAdd><numericMinus><numericConstant>70</numericConstant><numericConstant>65</numericConstant></numericMinus><numericConstant>1</numericConstant></numericAdd></numericDiv><type>double</type></cast><cast><numericDiv><numericMult><variableRef>uy</variableRef><variableRef>xy</variableRef></numericMult><numericAdd><numericMinus><numericConstant>70</numericConstant><numericConstant>65</numericConstant></numericMinus><numericConstant>1</numericConstant></numericAdd></numericDiv><type>double</type></cast></plus></mult></cos></mult></condense></construct><format>jpeg</format></encode></xmlSyntax></query></ProcessCoveragesRequest> \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/32-construct_condense_cosinus_gray_image.rasql b/petascope/test/testcases-wcps/32-construct_condense_cosinus_gray_image.rasql
new file mode 100644
index 0000000..d05509b
--- /dev/null
+++ b/petascope/test/testcases-wcps/32-construct_condense_cosinus_gray_image.rasql
@@ -0,0 +1 @@
+select jpeg((char)(marray ii in [0:10, 0:10] values condense + over ij in [0:10, 0:10] using cos(0.6))) from mr AS c \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/32-construct_condense_cosinus_gray_image.test b/petascope/test/testcases-wcps/32-construct_condense_cosinus_gray_image.test
new file mode 100644
index 0000000..7066b21
--- /dev/null
+++ b/petascope/test/testcases-wcps/32-construct_condense_cosinus_gray_image.test
@@ -0,0 +1,9 @@
+ for c in (mr) return encode((char)
+ coverage DFT
+ over $px x(0:10),
+ $py y(0:10)
+ values
+ condense +
+ over $kx x(0:10),
+ $ky y(0:10)
+ using cos(0.6) , "jpeg")
diff --git a/petascope/test/testcases-wcps/32-construct_condense_cosinus_gray_image.xml b/petascope/test/testcases-wcps/32-construct_condense_cosinus_gray_image.xml
new file mode 100644
index 0000000..8b94a46
--- /dev/null
+++ b/petascope/test/testcases-wcps/32-construct_condense_cosinus_gray_image.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+<query><xmlSyntax><coverageIterator><iteratorVar>c</iteratorVar><coverageName>mr</coverageName></coverageIterator><encode store="false"><cast><construct><name>DFT</name><axisIterator><iteratorVar>px</iteratorVar><axis>x</axis><numericConstant>0</numericConstant><numericConstant>10</numericConstant></axisIterator><axisIterator><iteratorVar>py</iteratorVar><axis>y</axis><numericConstant>0</numericConstant><numericConstant>10</numericConstant></axisIterator><condense><opPlus/><iterator><iteratorVar>kx</iteratorVar><axis>x</axis><numericConstant>0</numericConstant><numericConstant>10</numericConstant></iterator><iterator><iteratorVar>ky</iteratorVar><axis>y</axis><numericConstant>0</numericConstant><numericConstant>10</numericConstant></iterator><cos><numericConstant>0.6</numericConstant></cos></condense></construct><type>char</type></cast><format>jpeg</format></encode></xmlSyntax></query></ProcessCoveragesRequest> \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/33-construct_condense_gray_image.rasql b/petascope/test/testcases-wcps/33-construct_condense_gray_image.rasql
new file mode 100644
index 0000000..8fd1455
--- /dev/null
+++ b/petascope/test/testcases-wcps/33-construct_condense_gray_image.rasql
@@ -0,0 +1 @@
+select jpeg((char)(marray ii in [0:10, 0:10] values condense + over ij in [0:10, 0:10] using 1)) from mr AS c \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/33-construct_condense_gray_image.test b/petascope/test/testcases-wcps/33-construct_condense_gray_image.test
new file mode 100644
index 0000000..ed41e59
--- /dev/null
+++ b/petascope/test/testcases-wcps/33-construct_condense_gray_image.test
@@ -0,0 +1,9 @@
+for c in (mr) return encode((char)
+ coverage gray_image
+ over $px x(0:10),
+ $py y(0:10)
+ values
+ condense +
+ over $kx x(0:10),
+ $ky y(0:10)
+ using 1 , "jpeg")
diff --git a/petascope/test/testcases-wcps/33-construct_condense_gray_image.xml b/petascope/test/testcases-wcps/33-construct_condense_gray_image.xml
new file mode 100644
index 0000000..7cf76c6
--- /dev/null
+++ b/petascope/test/testcases-wcps/33-construct_condense_gray_image.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+<query><xmlSyntax><coverageIterator><iteratorVar>c</iteratorVar><coverageName>mr</coverageName></coverageIterator><encode store="false"><cast><construct><name>gray_image</name><axisIterator><iteratorVar>px</iteratorVar><axis>x</axis><numericConstant>0</numericConstant><numericConstant>10</numericConstant></axisIterator><axisIterator><iteratorVar>py</iteratorVar><axis>y</axis><numericConstant>0</numericConstant><numericConstant>10</numericConstant></axisIterator><condense><opPlus/><iterator><iteratorVar>kx</iteratorVar><axis>x</axis><numericConstant>0</numericConstant><numericConstant>10</numericConstant></iterator><iterator><iteratorVar>ky</iteratorVar><axis>y</axis><numericConstant>0</numericConstant><numericConstant>10</numericConstant></iterator><numericConstant>1</numericConstant></condense></construct><type>char</type></cast><format>jpeg</format></encode></xmlSyntax></query></ProcessCoveragesRequest> \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/34-where_clause.rasql b/petascope/test/testcases-wcps/34-where_clause.rasql
new file mode 100644
index 0000000..05b97ae
--- /dev/null
+++ b/petascope/test/testcases-wcps/34-where_clause.rasql
@@ -0,0 +1 @@
+select jpeg(c) from mr AS c where (avg_cells(c))>(30) \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/34-where_clause.test b/petascope/test/testcases-wcps/34-where_clause.test
new file mode 100644
index 0000000..abed2fa
--- /dev/null
+++ b/petascope/test/testcases-wcps/34-where_clause.test
@@ -0,0 +1,4 @@
+for c in (mr)
+where avg(c)>30
+return
+encode (c, "jpeg") \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/34-where_clause.xml b/petascope/test/testcases-wcps/34-where_clause.xml
new file mode 100644
index 0000000..8117e2a
--- /dev/null
+++ b/petascope/test/testcases-wcps/34-where_clause.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+ <query>
+ <xmlSyntax>
+ <coverageIterator>
+ <iteratorVar>c</iteratorVar>
+ <coverageName>mr</coverageName>
+ </coverageIterator>
+ <where>
+ <booleanGreaterThan>
+ <reduce>
+ <avg>
+ <coverage>c</coverage>
+ </avg>
+ </reduce>
+ <numericConstant>30</numericConstant>
+ </booleanGreaterThan>
+ </where>
+ <encode store="false">
+ <coverage>c</coverage>
+ <format>jpeg</format>
+ </encode>
+ </xmlSyntax>
+ </query>
+</ProcessCoveragesRequest> \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/35-coordinates_in_wgs84_crs.rasql b/petascope/test/testcases-wcps/35-coordinates_in_wgs84_crs.rasql
new file mode 100644
index 0000000..bdb4129
--- /dev/null
+++ b/petascope/test/testcases-wcps/35-coordinates_in_wgs84_crs.rasql
@@ -0,0 +1 @@
+ select jpeg(c[1:100,-31:274]) from lena AS c \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/35-coordinates_in_wgs84_crs.test b/petascope/test/testcases-wcps/35-coordinates_in_wgs84_crs.test
new file mode 100644
index 0000000..df012f0
--- /dev/null
+++ b/petascope/test/testcases-wcps/35-coordinates_in_wgs84_crs.test
@@ -0,0 +1 @@
+for c in (lena) return encode(c [x:"CRS:1" (1:100), y:"EPSG:4326" (1:100) ], "jpeg") \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/35-coordinates_in_wgs84_crs.xml b/petascope/test/testcases-wcps/35-coordinates_in_wgs84_crs.xml
new file mode 100644
index 0000000..940bfd2
--- /dev/null
+++ b/petascope/test/testcases-wcps/35-coordinates_in_wgs84_crs.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+ <query>
+ <xmlSyntax>
+ <coverageIterator>
+ <iteratorVar>c</iteratorVar>
+ <coverageName>lena</coverageName>
+ </coverageIterator>
+ <encode store="false">
+ <trim>
+ <coverage>c</coverage>
+ <axis>x</axis>
+ <srsName>CRS:1</srsName>
+ <lowerBound>
+ <numericConstant>1</numericConstant>
+ </lowerBound>
+ <upperBound>
+ <numericConstant>100</numericConstant>
+ </upperBound>
+ <axis>y</axis>
+ <srsName>EPSG:4326</srsName>
+ <lowerBound>
+ <numericConstant>1</numericConstant>
+ </lowerBound>
+ <upperBound>
+ <numericConstant>100</numericConstant>
+ </upperBound>
+ </trim>
+ <format>jpeg</format>
+ </encode>
+ </xmlSyntax>
+ </query>
+</ProcessCoveragesRequest> \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/36-simple_overlay.rasql b/petascope/test/testcases-wcps/36-simple_overlay.rasql
new file mode 100644
index 0000000..927f0ff
--- /dev/null
+++ b/petascope/test/testcases-wcps/36-simple_overlay.rasql
@@ -0,0 +1 @@
+select jpeg(((c)overlay((char)(((c)*(3)))))) from rgb AS c \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/36-simple_overlay.test b/petascope/test/testcases-wcps/36-simple_overlay.test
new file mode 100644
index 0000000..03f4464
--- /dev/null
+++ b/petascope/test/testcases-wcps/36-simple_overlay.test
@@ -0,0 +1 @@
+for c in (rgb) return encode(c overlay (char)(c*3), "jpeg") \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/36-simple_overlay.xml b/petascope/test/testcases-wcps/36-simple_overlay.xml
new file mode 100644
index 0000000..829faaf
--- /dev/null
+++ b/petascope/test/testcases-wcps/36-simple_overlay.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+ <query>
+ <xmlSyntax>
+ <coverageIterator>
+ <iteratorVar>c</iteratorVar>
+ <coverageName>rgb</coverageName>
+ </coverageIterator>
+ <encode store="false">
+ <overlay>
+ <coverage>c</coverage>
+ <cast>
+ <mult>
+ <coverage>c</coverage>
+ <numericConstant>3</numericConstant>
+ </mult>
+ <type>char</type>
+ </cast>
+ </overlay>
+ <format>jpeg</format>
+ </encode>
+ </xmlSyntax>
+ </query>
+</ProcessCoveragesRequest> \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/37-simple_extend.rasql b/petascope/test/testcases-wcps/37-simple_extend.rasql
new file mode 100644
index 0000000..af01721
--- /dev/null
+++ b/petascope/test/testcases-wcps/37-simple_extend.rasql
@@ -0,0 +1 @@
+select jpeg(extend(c,[0:500,0:500])) from rgb AS c \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/37-simple_extend.test b/petascope/test/testcases-wcps/37-simple_extend.test
new file mode 100644
index 0000000..0582ac7
--- /dev/null
+++ b/petascope/test/testcases-wcps/37-simple_extend.test
@@ -0,0 +1 @@
+for c in (rgb) return encode(extend(c, x(0:500), y(0:500) ), "jpeg") \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/37-simple_extend.xml b/petascope/test/testcases-wcps/37-simple_extend.xml
new file mode 100644
index 0000000..7f966a3
--- /dev/null
+++ b/petascope/test/testcases-wcps/37-simple_extend.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+ <query>
+ <xmlSyntax>
+ <coverageIterator>
+ <iteratorVar>c</iteratorVar>
+ <coverageName>rgb</coverageName>
+ </coverageIterator>
+ <encode store="false">
+ <extend>
+ <coverage>c</coverage>
+ <axis>x</axis>
+ <lowerBound>
+ <numericConstant>0</numericConstant>
+ </lowerBound>
+ <upperBound>
+ <numericConstant>500</numericConstant>
+ </upperBound>
+ <axis>y</axis>
+ <lowerBound>
+ <numericConstant>0</numericConstant>
+ </lowerBound>
+ <upperBound>
+ <numericConstant>500</numericConstant>
+ </upperBound>
+ </extend>
+ <format>jpeg</format>
+ </encode>
+ </xmlSyntax>
+ </query>
+</ProcessCoveragesRequest> \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/38-complex_extend.rasql b/petascope/test/testcases-wcps/38-complex_extend.rasql
new file mode 100644
index 0000000..d267106
--- /dev/null
+++ b/petascope/test/testcases-wcps/38-complex_extend.rasql
@@ -0,0 +1 @@
+select jpeg(extend(((t)+((char)(50))),[0:500,0:500])) from rgb AS t \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/38-complex_extend.test b/petascope/test/testcases-wcps/38-complex_extend.test
new file mode 100644
index 0000000..3f73e2e
--- /dev/null
+++ b/petascope/test/testcases-wcps/38-complex_extend.test
@@ -0,0 +1 @@
+for t in (rgb) return encode(extend( (t + (char)50), x :"CRS:1" ( 0:500 ), y: "CRS:1" (0: 500) ), "jpeg" ) \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/38-complex_extend.xml b/petascope/test/testcases-wcps/38-complex_extend.xml
new file mode 100644
index 0000000..26f34a5
--- /dev/null
+++ b/petascope/test/testcases-wcps/38-complex_extend.xml
@@ -0,0 +1,3 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+<query><xmlSyntax><coverageIterator><iteratorVar>t</iteratorVar><coverageName>rgb</coverageName></coverageIterator><encode store="false"><extend><plus><coverage>t</coverage><cast><numericConstant>50</numericConstant><type>char</type></cast></plus><axis>x</axis><srsName>CRS:1</srsName><lowerBound><numericConstant>0</numericConstant></lowerBound><upperBound><numericConstant>500</numericConstant></upperBound><axis>y</axis><srsName>CRS:1</srsName><lowerBound><numericConstant>0</numericConstant></lowerBound><upperBound><numericConstant>500</numericConstant></upperBound></extend><format>jpeg</format></encode></xmlSyntax></query></ProcessCoveragesRequest> \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/39-complex_extend-2.rasql b/petascope/test/testcases-wcps/39-complex_extend-2.rasql
new file mode 100644
index 0000000..761e761
--- /dev/null
+++ b/petascope/test/testcases-wcps/39-complex_extend-2.rasql
@@ -0,0 +1 @@
+select jpeg(((extend(t,[0:500,0:500]))+((char)(0)))) from mr AS t \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/39-complex_extend-2.test b/petascope/test/testcases-wcps/39-complex_extend-2.test
new file mode 100644
index 0000000..6e8e45e
--- /dev/null
+++ b/petascope/test/testcases-wcps/39-complex_extend-2.test
@@ -0,0 +1 @@
+for t in (mr) return encode(extend( t, x :"CRS:1" ( 0:500 ), y: "CRS:1" (0: 500) ) + (char) 0 , "jpeg" ) \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/39-complex_extend-2.xml b/petascope/test/testcases-wcps/39-complex_extend-2.xml
new file mode 100644
index 0000000..15ca033
--- /dev/null
+++ b/petascope/test/testcases-wcps/39-complex_extend-2.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+ <query>
+ <xmlSyntax>
+ <coverageIterator>
+ <iteratorVar>t</iteratorVar>
+ <coverageName>mr</coverageName>
+ </coverageIterator>
+ <encode store="false">
+ <plus>
+ <extend>
+ <coverage>t</coverage>
+ <axis>x</axis>
+ <srsName>CRS:1</srsName>
+ <lowerBound>
+ <numericConstant>0</numericConstant>
+ </lowerBound>
+ <upperBound>
+ <numericConstant>500</numericConstant>
+ </upperBound>
+ <axis>y</axis>
+ <srsName>CRS:1</srsName>
+ <lowerBound>
+ <numericConstant>0</numericConstant>
+ </lowerBound>
+ <upperBound>
+ <numericConstant>500</numericConstant>
+ </upperBound>
+ </extend>
+ <cast>
+ <numericConstant>0</numericConstant>
+ <type>char</type>
+ </cast>
+ </plus>
+ <format>jpeg</format>
+ </encode>
+ </xmlSyntax>
+ </query>
+</ProcessCoveragesRequest> \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/40-range_structure.rasql b/petascope/test/testcases-wcps/40-range_structure.rasql
new file mode 100644
index 0000000..1bdf55f
--- /dev/null
+++ b/petascope/test/testcases-wcps/40-range_structure.rasql
@@ -0,0 +1 @@
+select jpeg((((c).red)*({ 1c,2c,3c }))) from rgb as c \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/40-range_structure.test b/petascope/test/testcases-wcps/40-range_structure.test
new file mode 100644
index 0000000..2c3dbb7
--- /dev/null
+++ b/petascope/test/testcases-wcps/40-range_structure.test
@@ -0,0 +1,9 @@
+for c in ( rgb ) return
+encode(
+ c.red *
+ {
+ red: (char) 1;
+ green: (char) 2;
+ blue: (char) 3
+ },
+"jpeg") \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/40-range_structure.xml b/petascope/test/testcases-wcps/40-range_structure.xml
new file mode 100644
index 0000000..34c2f19
--- /dev/null
+++ b/petascope/test/testcases-wcps/40-range_structure.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+ <query>
+ <xmlSyntax>
+ <coverageIterator>
+ <iteratorVar>c</iteratorVar>
+ <coverageName>rgb</coverageName>
+ </coverageIterator>
+ <encode store="false">
+ <mult>
+ <fieldSelect>
+ <coverage>c</coverage>
+ <field>
+ <name>red</name>
+ </field>
+ </fieldSelect>
+ <rangeConstructor>
+ <component>
+ <field>red</field>
+ <cast>
+ <numericConstant>1</numericConstant>
+ <type>char</type>
+ </cast>
+ </component>
+ <component>
+ <field>green</field>
+ <cast>
+ <numericConstant>2</numericConstant>
+ <type>char</type>
+ </cast>
+ </component>
+ <component>
+ <field>blue</field>
+ <cast>
+ <numericConstant>3</numericConstant>
+ <type>char</type>
+ </cast>
+ </component>
+ </rangeConstructor>
+ </mult>
+ <format>jpeg</format>
+ </encode>
+ </xmlSyntax>
+ </query>
+</ProcessCoveragesRequest>
diff --git a/petascope/test/testcases-wcps/41-filter_calculation_reloaded.rasql b/petascope/test/testcases-wcps/41-filter_calculation_reloaded.rasql
new file mode 100644
index 0000000..28b7474
--- /dev/null
+++ b/petascope/test/testcases-wcps/41-filter_calculation_reloaded.rasql
@@ -0,0 +1 @@
+select jpeg(marray ii in [1:100, 1:100] values sqrt(abs(condense + over ij in [-1:1, -1:1] using ((((((double)(< [-1:1, -1:1] -1, 0, 1, -2, 0, 2, -1, 0, 1>)) [ij[0],ij[1]])*((c) [(ii[0])+(ij[0]),(ii[1])+(ij[1])])))/((8)*(5.13712275)))))) from mr AS c \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/41-filter_calculation_reloaded.test b/petascope/test/testcases-wcps/41-filter_calculation_reloaded.test
new file mode 100644
index 0000000..0e560a0
--- /dev/null
+++ b/petascope/test/testcases-wcps/41-filter_calculation_reloaded.test
@@ -0,0 +1,17 @@
+for c in (mr) return encode((char)
+ coverage filteredImage
+ over $px x(1:100),
+ $py y(1:100)
+ values
+ sqrt(abs(
+ condense +
+ over $kx x(-1:1),
+ $ky y(-1:1)
+ using
+ ((((double)coverage kernel
+ over $x x (-1:1),
+ $y y(-1:1)
+ value list < -1; 0; 1; -2; 0; 2;-1; 0; 1 >) [x($kx),y($ky)])
+ *(c[x($px+$kx),y($py+$ky)])/(8*5.13712275))
+ ))
+, "jpeg") \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/41-filter_calculation_reloaded.xml b/petascope/test/testcases-wcps/41-filter_calculation_reloaded.xml
new file mode 100644
index 0000000..e8731ed
--- /dev/null
+++ b/petascope/test/testcases-wcps/41-filter_calculation_reloaded.xml
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+ <query>
+ <xmlSyntax>
+ <coverageIterator>
+ <iteratorVar>c</iteratorVar>
+ <coverageName>mr</coverageName>
+ </coverageIterator>
+ <encode store="false">
+ <cast>
+ <construct>
+ <name>filteredImage</name>
+ <axisIterator>
+ <iteratorVar>px</iteratorVar>
+ <axis>x</axis>
+ <numericConstant>1</numericConstant>
+ <numericConstant>100</numericConstant>
+ </axisIterator>
+ <axisIterator>
+ <iteratorVar>py</iteratorVar>
+ <axis>y</axis>
+ <numericConstant>1</numericConstant>
+ <numericConstant>100</numericConstant>
+ </axisIterator>
+ <numericSqrt>
+ <numericAbs>
+ <condense>
+ <opPlus/>
+ <iterator>
+ <iteratorVar>kx</iteratorVar>
+ <axis>x</axis>
+ <numericConstant>-1</numericConstant>
+ <numericConstant>1</numericConstant>
+ </iterator>
+ <iterator>
+ <iteratorVar>ky</iteratorVar>
+ <axis>y</axis>
+ <numericConstant>-1</numericConstant>
+ <numericConstant>1</numericConstant>
+ </iterator>
+ <div>
+ <mult>
+ <slice>
+ <cast>
+ <const>
+ <name>kernel</name>
+ <axisIterator>
+ <iteratorVar>x</iteratorVar>
+ <axis>x</axis>
+ <numericConstant>-1</numericConstant>
+ <numericConstant>1</numericConstant>
+ </axisIterator>
+ <axisIterator>
+ <iteratorVar>y</iteratorVar>
+ <axis>y</axis>
+ <numericConstant>-1</numericConstant>
+ <numericConstant>1</numericConstant>
+ </axisIterator>
+ <value>-1</value>
+ <value>0</value>
+ <value>1</value>
+ <value>-2</value>
+ <value>0</value>
+ <value>2</value>
+ <value>-1</value>
+ <value>0</value>
+ <value>1</value>
+ </const>
+ <type>double</type>
+ </cast>
+ <axis>x</axis>
+ <slicingPosition>
+ <variableRef>kx</variableRef>
+ </slicingPosition>
+ <axis>y</axis>
+ <slicingPosition>
+ <variableRef>ky</variableRef>
+ </slicingPosition>
+ </slice>
+ <slice>
+ <coverage>c</coverage>
+ <axis>x</axis>
+ <slicingPosition>
+ <numericAdd>
+ <variableRef>px</variableRef>
+ <variableRef>kx</variableRef>
+ </numericAdd>
+ </slicingPosition>
+ <axis>y</axis>
+ <slicingPosition>
+ <numericAdd>
+ <variableRef>py</variableRef>
+ <variableRef>ky</variableRef>
+ </numericAdd>
+ </slicingPosition>
+ </slice>
+ </mult>
+ <numericMult>
+ <numericConstant>8</numericConstant>
+ <numericConstant>5.13712275</numericConstant>
+ </numericMult>
+ </div>
+ </condense>
+ </numericAbs>
+ </numericSqrt>
+ </construct>
+ <type>char</type>
+ </cast>
+ <format>jpeg</format>
+ </encode>
+ </xmlSyntax>
+ </query>
+</ProcessCoveragesRequest> \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/42-filter_calculation.rasql b/petascope/test/testcases-wcps/42-filter_calculation.rasql
new file mode 100644
index 0000000..4894e27
--- /dev/null
+++ b/petascope/test/testcases-wcps/42-filter_calculation.rasql
@@ -0,0 +1 @@
+select jpeg((char)(marray ii in [1:100, 1:100] values condense + over ij in [-1:1, -1:1] using ((((((double)(< [-1:1, -1:1] -1, 0, 1, -2, 0, 2, -1, 0, 1>)) [ij[0],ij[1]])*((c) [(ii[0])+(ij[0]),(ii[1])+(ij[1])])))/((8)*(5.13712275))))) from mr AS c \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/42-filter_calculation.test b/petascope/test/testcases-wcps/42-filter_calculation.test
new file mode 100644
index 0000000..d32d1b2
--- /dev/null
+++ b/petascope/test/testcases-wcps/42-filter_calculation.test
@@ -0,0 +1,17 @@
+for c in (mr) return encode((char)
+ coverage filteredImage
+ over $px x(1:100),
+ $py y(1:100)
+ values
+ (
+ condense +
+ over $kx x(-1:1),
+ $ky y(-1:1)
+ using
+ ((((double)coverage kernel
+ over $x x (-1:1),
+ $y y(-1:1)
+ value list < -1; 0; 1; -2; 0; 2;-1; 0; 1 >) [x($kx),y($ky)])
+ *(c[x($px+$kx),y($py+$ky)])/(8*5.13712275))
+ )
+, "jpeg") \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/42-filter_calculation.xml b/petascope/test/testcases-wcps/42-filter_calculation.xml
new file mode 100644
index 0000000..b5c2223
--- /dev/null
+++ b/petascope/test/testcases-wcps/42-filter_calculation.xml
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+ <query>
+ <xmlSyntax>
+ <coverageIterator>
+ <iteratorVar>c</iteratorVar>
+ <coverageName>mr</coverageName>
+ </coverageIterator>
+ <encode store="false">
+ <cast>
+ <construct>
+ <name>filteredImage</name>
+ <axisIterator>
+ <iteratorVar>px</iteratorVar>
+ <axis>x</axis>
+ <numericConstant>1</numericConstant>
+ <numericConstant>100</numericConstant>
+ </axisIterator>
+ <axisIterator>
+ <iteratorVar>py</iteratorVar>
+ <axis>y</axis>
+ <numericConstant>1</numericConstant>
+ <numericConstant>100</numericConstant>
+ </axisIterator>
+ <condense>
+ <opPlus/>
+ <iterator>
+ <iteratorVar>kx</iteratorVar>
+ <axis>x</axis>
+ <numericConstant>-1</numericConstant>
+ <numericConstant>1</numericConstant>
+ </iterator>
+ <iterator>
+ <iteratorVar>ky</iteratorVar>
+ <axis>y</axis>
+ <numericConstant>-1</numericConstant>
+ <numericConstant>1</numericConstant>
+ </iterator>
+ <div>
+ <mult>
+ <slice>
+ <cast>
+ <const>
+ <name>kernel</name>
+ <axisIterator>
+ <iteratorVar>x</iteratorVar>
+ <axis>x</axis>
+ <numericConstant>-1</numericConstant>
+ <numericConstant>1</numericConstant>
+ </axisIterator>
+ <axisIterator>
+ <iteratorVar>y</iteratorVar>
+ <axis>y</axis>
+ <numericConstant>-1</numericConstant>
+ <numericConstant>1</numericConstant>
+ </axisIterator>
+ <value>-1</value>
+ <value>0</value>
+ <value>1</value>
+ <value>-2</value>
+ <value>0</value>
+ <value>2</value>
+ <value>-1</value>
+ <value>0</value>
+ <value>1</value>
+ </const>
+ <type>double</type>
+ </cast>
+ <axis>x</axis>
+ <slicingPosition>
+ <variableRef>kx</variableRef>
+ </slicingPosition>
+ <axis>y</axis>
+ <slicingPosition>
+ <variableRef>ky</variableRef>
+ </slicingPosition>
+ </slice>
+ <slice>
+ <coverage>c</coverage>
+ <axis>x</axis>
+ <slicingPosition>
+ <numericAdd>
+ <variableRef>px</variableRef>
+ <variableRef>kx</variableRef>
+ </numericAdd>
+ </slicingPosition>
+ <axis>y</axis>
+ <slicingPosition>
+ <numericAdd>
+ <variableRef>py</variableRef>
+ <variableRef>ky</variableRef>
+ </numericAdd>
+ </slicingPosition>
+ </slice>
+ </mult>
+ <numericMult>
+ <numericConstant>8</numericConstant>
+ <numericConstant>5.13712275</numericConstant>
+ </numericMult>
+ </div>
+ </condense>
+ </construct>
+ <type>char</type>
+ </cast>
+ <format>jpeg</format>
+ </encode>
+ </xmlSyntax>
+ </query>
+</ProcessCoveragesRequest>
diff --git a/petascope/test/testcases-wcps/43-encoder_options.rasql b/petascope/test/testcases-wcps/43-encoder_options.rasql
new file mode 100644
index 0000000..56ce75b
--- /dev/null
+++ b/petascope/test/testcases-wcps/43-encoder_options.rasql
@@ -0,0 +1 @@
+select dem(a, "startx=0,starty=0,endx=1000,endy=1000,resx=0.1,resy=0.15") from mr AS a \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/43-encoder_options.test b/petascope/test/testcases-wcps/43-encoder_options.test
new file mode 100644
index 0000000..2bd7b3d
--- /dev/null
+++ b/petascope/test/testcases-wcps/43-encoder_options.test
@@ -0,0 +1,2 @@
+for a in (mr) return
+ encode(a,"dem", "startx=0,starty=0,endx=1000,endy=1000,resx=0.1,resy=0.15") \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/43-encoder_options.xml b/petascope/test/testcases-wcps/43-encoder_options.xml
new file mode 100644
index 0000000..8fc1e7f
--- /dev/null
+++ b/petascope/test/testcases-wcps/43-encoder_options.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+ <query>
+ <xmlSyntax>
+ <coverageIterator>
+ <iteratorVar>a</iteratorVar>
+ <coverageName>mr</coverageName>
+ </coverageIterator>
+ <encode store="false">
+ <coverage>a</coverage>
+ <format>dem</format>
+ <extraParameters>startx=0,starty=0,endx=1000,endy=1000,resx=0.1,resy=0.15</extraParameters>
+ </encode>
+ </xmlSyntax>
+ </query>
+</ProcessCoveragesRequest> \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/44-scaling_operation.rasql b/petascope/test/testcases-wcps/44-scaling_operation.rasql
new file mode 100644
index 0000000..5cc051a
--- /dev/null
+++ b/petascope/test/testcases-wcps/44-scaling_operation.rasql
@@ -0,0 +1 @@
+select png(scale( c, [1:600,1:600] )) from rgb AS c \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/44-scaling_operation.test b/petascope/test/testcases-wcps/44-scaling_operation.test
new file mode 100644
index 0000000..81a6568
--- /dev/null
+++ b/petascope/test/testcases-wcps/44-scaling_operation.test
@@ -0,0 +1,2 @@
+for c in (rgb)
+ return encode(scale(c, x(1:600), y(1:600)), "png") \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/44-scaling_operation.xml b/petascope/test/testcases-wcps/44-scaling_operation.xml
new file mode 100644
index 0000000..4ec2b9c
--- /dev/null
+++ b/petascope/test/testcases-wcps/44-scaling_operation.xml
@@ -0,0 +1,30 @@
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+ <query>
+ <xmlSyntax>
+ <coverageIterator>
+ <iteratorVar>c</iteratorVar>
+ <coverageName>rgb</coverageName>
+ </coverageIterator>
+ <encode store="false">
+ <scale>
+ <coverage>c</coverage>
+ <axis>x</axis>
+ <lowerBound>
+ <numericConstant>1</numericConstant>
+ </lowerBound>
+ <upperBound>
+ <numericConstant>600</numericConstant>
+ </upperBound>
+ <axis>y</axis>
+ <lowerBound>
+ <numericConstant>1</numericConstant>
+ </lowerBound>
+ <upperBound>
+ <numericConstant>600</numericConstant>
+ </upperBound>
+ </scale>
+ <format>png</format>
+ </encode>
+ </xmlSyntax>
+ </query>
+</ProcessCoveragesRequest> \ No newline at end of file
diff --git a/petascope/test/testcases-wcps/abstract.xml b/petascope/test/testcases-wcps/abstract.xml
new file mode 100644
index 0000000..bfc5306
--- /dev/null
+++ b/petascope/test/testcases-wcps/abstract.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<ProcessCoveragesRequest xmlns="http://www.opengis.net/wcps/1.0" service="WCPS" version="1.0.0">
+ <query>
+ <abstractSyntax>
+ for c in ( rgb ) return encode( ((char) abs( c.1 - c.0 ))[ x(0:450), y(0:300) ], "png" )
+ </abstractSyntax>
+ </query>
+</ProcessCoveragesRequest> \ No newline at end of file
diff --git a/petascope/test/testcases-wcs/input/DescribeCoverage1.xml b/petascope/test/testcases-wcs/input/DescribeCoverage1.xml
new file mode 100644
index 0000000..81a72b7
--- /dev/null
+++ b/petascope/test/testcases-wcs/input/DescribeCoverage1.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<DescribeCoverage xmlns="http://www.opengis.net/wcs/1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wcs/1.1 ../wcsDescribeCoverage.xsd" service="WCS" version="1.1.2">
+ <Identifier>coverage_not_offered_by_the_server</Identifier>
+</DescribeCoverage> \ No newline at end of file
diff --git a/petascope/test/testcases-wcs/input/DescribeCoverage2.xml b/petascope/test/testcases-wcs/input/DescribeCoverage2.xml
new file mode 100644
index 0000000..1b42a01
--- /dev/null
+++ b/petascope/test/testcases-wcs/input/DescribeCoverage2.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<DescribeCoverage xmlns="http://www.opengis.net/wcs/1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wcs/1.1 ../wcsDescribeCoverage.xsd" service="WCS" version="1.1.2">
+<!-- <Identifier>mr</Identifier> -->
+ <Identifier>rgb</Identifier>
+ <Identifier>mr</Identifier>
+ <Identifier>mowglie</Identifier>
+</DescribeCoverage> \ No newline at end of file
diff --git a/petascope/test/testcases-wcs/input/GetCapabilitiesMax.xml b/petascope/test/testcases-wcs/input/GetCapabilitiesMax.xml
new file mode 100644
index 0000000..b17c714
--- /dev/null
+++ b/petascope/test/testcases-wcs/input/GetCapabilitiesMax.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<GetCapabilities xmlns="http://www.opengis.net/wcs/1.1"
+xmlns:owcs="http://www.opengis.net/wcs/1.1/ows"
+service="WCS">
+ <owcs:AcceptVersions>
+ <owcs:Version>1.0.0</owcs:Version>
+ <owcs:Version>0.8.3</owcs:Version>
+ </owcs:AcceptVersions>
+ <owcs:Sections>
+ <owcs:Section>Contents</owcs:Section>
+ </owcs:Sections>
+ <owcs:AcceptFormats>
+ <owcs:OutputFormat>text/xml</owcs:OutputFormat>
+ </owcs:AcceptFormats>
+</GetCapabilities>
diff --git a/petascope/test/testcases-wcs/input/GetCoverage1.xml b/petascope/test/testcases-wcs/input/GetCoverage1.xml
new file mode 100644
index 0000000..4a4dadc
--- /dev/null
+++ b/petascope/test/testcases-wcs/input/GetCoverage1.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<GetCoverage xmlns="http://www.opengis.net/wcs/1.1" xmlns:ows="http://www.opengis.net/ows" xmlns:owcs="http://www.opengis.net/wcs/1.1/ows" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wcs/1.1 ../wcsGetCoverage.xsd http://www.opengis.net/gml ../../../gml/3.1.1/base/gml.xsd" service="WCS" version="1.1.0">
+ <owcs:Identifier>NIR</owcs:Identifier>
+ <DomainSubset>
+ <ows:BoundingBox>
+ <ows:LowerCorner>0 0</ows:LowerCorner>
+ <ows:UpperCorner>450 300</ows:UpperCorner>
+ </ows:BoundingBox>
+ </DomainSubset>
+ <Output format="image/jpeg" />
+</GetCoverage> \ No newline at end of file
diff --git a/petascope/test/testcases-wcs/input/GetCoverage2.xml b/petascope/test/testcases-wcs/input/GetCoverage2.xml
new file mode 100644
index 0000000..1000c9d
--- /dev/null
+++ b/petascope/test/testcases-wcs/input/GetCoverage2.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<GetCoverage xmlns="http://www.opengis.net/wcs/1.1" xmlns:ows="http://www.opengis.net/ows" xmlns:owcs="http://www.opengis.net/wcs/1.1/ows" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wcs/1.1 ../wcsGetCoverage.xsd" service="WCS" version="1.1.0">
+ <!-- Partial example. Primary editor: Arliss Whiteside. Last updated 2006-09-20-->
+ <owcs:Identifier>TBD</owcs:Identifier>
+ <DomainSubset>
+ <ows:BoundingBox>
+ <ows:LowerCorner>9999 56</ows:LowerCorner>
+ <ows:UpperCorner>23 9999</ows:UpperCorner>
+ </ows:BoundingBox>
+ </DomainSubset>
+ <RangeSubset>
+ <FieldSubset>
+ <owcs:Identifier>TBDField</owcs:Identifier>
+ </FieldSubset>
+ </RangeSubset>
+ <Output format="image/gif" store="false"/>
+</GetCoverage> \ No newline at end of file
diff --git a/petascope/test/testcases-wcs/input/GetCoverage3.xml b/petascope/test/testcases-wcs/input/GetCoverage3.xml
new file mode 100644
index 0000000..5d71efa
--- /dev/null
+++ b/petascope/test/testcases-wcs/input/GetCoverage3.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<GetCoverage xmlns="http://www.opengis.net/wcs/1.1" xmlns:ows="http://www.opengis.net/ows" xmlns:owcs="http://www.opengis.net/wcs/1.1/ows" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wcs/1.1 ../wcsGetCoverage.xsd http://www.opengis.net/gml ../../../gml/3.1.1/base/gml.xsd" service="WCS" version="1.1.0">
+ <owcs:Identifier>rgb</owcs:Identifier>
+ <DomainSubset>
+ <ows:BoundingBox crs="urn:ogc:def:crs:EPSG::26910">
+ <ows:LowerCorner>0 0</ows:LowerCorner>
+ <ows:UpperCorner>300 300</ows:UpperCorner>
+ </ows:BoundingBox>
+ </DomainSubset>
+ <RangeSubset>
+ <FieldSubset>
+ <owcs:Identifier>Wavelength</owcs:Identifier>
+ <InterpolationType>nearest</InterpolationType>
+ <AxisSubset>
+ <Identifier>Band</Identifier>
+ <Key>band1</Key>
+ <Key>band2</Key>
+ <Key>band3</Key>
+ </AxisSubset>
+ </FieldSubset>
+ </RangeSubset>
+ <Output format="image/GeoTIFF" store="true" />
+</GetCoverage> \ No newline at end of file
diff --git a/petascope/test/testcases-wcs/input/GetCoverage4.xml b/petascope/test/testcases-wcs/input/GetCoverage4.xml
new file mode 100644
index 0000000..4a339fe
--- /dev/null
+++ b/petascope/test/testcases-wcs/input/GetCoverage4.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<GetCoverage xmlns="http://www.opengis.net/wcs/1.1" xmlns:ows="http://www.opengis.net/ows" xmlns:owcs="http://www.opengis.net/wcs/1.1/ows" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wcs/1.1 ../wcsGetCoverage.xsd http://www.opengis.net/gml ../../../gml/3.1.1/base/gml.xsd" service="WCS" version="1.1.0">
+ <owcs:Identifier>SPVIEW_530_274_0_020809_5_1_J_3</owcs:Identifier>
+ <DomainSubset>
+ <ows:BoundingBox crs="urn:ogc:def:crs:EPSG::26910">
+ <ows:LowerCorner>551182.3990 4173461.7219</ows:LowerCorner>
+ <ows:UpperCorner>569339.8990 4192512.2137</ows:UpperCorner>
+ </ows:BoundingBox>
+ <TemporalSubset>
+ <gml:timePosition>2002-08-09T19:08:46Z</gml:timePosition>
+ </TemporalSubset>
+ </DomainSubset>
+ <RangeSubset>
+ <FieldSubset>
+ <owcs:Identifier>Wavelength</owcs:Identifier>
+ <InterpolationType>nearest</InterpolationType>
+ <AxisSubset>
+ <Identifier>Band</Identifier>
+ <Key>band1</Key>
+ <Key>band2</Key>
+ <Key>band3</Key>
+ </AxisSubset>
+ </FieldSubset>
+ </RangeSubset>
+ <Output format="image/GeoTIFF" store="true">
+ <GridCRS gml:id="SPVIEW_530_274_0_020809_5_1_J_3_SUBSET_CRS">
+ <gml:srsName>SPVIEW_530_274_0_020809_5_1_J_3_SUBSET_CRS</gml:srsName>
+ <GridBaseCRS>urn:ogc:def:crs:EPSG::4326</GridBaseCRS>
+ <GridType>urn:ogc:def:method:WCS:1.1:grid2dIn2dMethod</GridType>
+ <GridOrigin>-122.4193 37.7058</GridOrigin>
+ <GridOffsets>0.0006926667 0 0 -0.000548889</GridOffsets>
+ <GridCS>urn:ogc:def:cs:OGC:0.0:Grid2dSquareCS</GridCS>
+ </GridCRS>
+ </Output>
+</GetCoverage> \ No newline at end of file
diff --git a/petascope/test/testcases-wcs/output/Capabilities.xml b/petascope/test/testcases-wcs/output/Capabilities.xml
new file mode 100644
index 0000000..182cfeb
--- /dev/null
+++ b/petascope/test/testcases-wcs/output/Capabilities.xml
@@ -0,0 +1,181 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<ns2:Capabilities xmlns="http://www.opengis.net/ows" xmlns:ns2="http://www.opengis.net/wcs/1.1" xmlns:ns3="http://www.opengis.net/wcs/1.1/ows" xmlns:ns4="http://www.w3.org/1999/xlink" xmlns:ns5="http://www.opengis.net/gml" xmlns:ns6="http://www.w3.org/2001/SMIL20/" xmlns:ns7="http://www.w3.org/2001/SMIL20/Language" version="1.1.0">
+ <ns3:ServiceIdentification>
+ <Title>WCS Coverage Server @ Jacobs University</Title>
+ <Abstract>WCS Server developed at jacobs University</Abstract>
+ <ns3:ServiceType>OGC WCS</ns3:ServiceType>
+ <ns3:Fees>NONE</ns3:Fees>
+ </ns3:ServiceIdentification>
+ <ServiceProvider>
+ <ProviderName>Jacobs University Bremen</ProviderName>
+ <ProviderSite ns4:href="http://www.jacobs-university.de/"/>
+ </ServiceProvider>
+ <ns3:OperationsMetadata>
+ <ns3:Operation name="GetCapabilities">
+ <ns3:DCP>
+ <ns3:HTTP>
+ <Soap xmlns:ns8="http://www.opengis.net/ows" xmlns="" ns4:href="http://localhost/SOAP/URL/for/GetCapabalities"/>
+ <Post xmlns:ns8="http://www.opengis.net/ows" xmlns="" ns4:href="http://localhost/please/replace/me/by/my/GetCapabilities/URL"/>
+ </ns3:HTTP>
+ </ns3:DCP>
+ </ns3:Operation>
+ <ns3:Operation name="GetCoverage">
+ <ns3:DCP>
+ <ns3:HTTP>
+ <Soap xmlns:ns8="http://www.opengis.net/ows" xmlns="" ns4:href="http://localhost/SOAP/URL/for/GetCapabalities"/>
+ <Post xmlns:ns8="http://www.opengis.net/ows" xmlns="" ns4:href="http://localhost/please/replace/me/by/my/GetCoverage/URL"/>
+ </ns3:HTTP>
+ </ns3:DCP>
+ <ns3:Constraint name="Format">
+ <ns3:AllowedValues>
+ <ns3:Value>image/jpeg</ns3:Value>
+ <ns3:Value>image/jpeg</ns3:Value>
+ <ns3:Value>image/png</ns3:Value>
+ <ns3:Value>image/tiff</ns3:Value>
+ <ns3:Value>image/tiff</ns3:Value>
+ <ns3:Value>application/x-octet-stream</ns3:Value>
+ </ns3:AllowedValues>
+ </ns3:Constraint>
+ <ns3:Constraint name="Format">
+ <ns3:AllowedValues>
+ <ns3:Value>text/xml</ns3:Value>
+ </ns3:AllowedValues>
+ </ns3:Constraint>
+ </ns3:Operation>
+ <ns3:Operation name="DescribeCoverage">
+ <ns3:DCP>
+ <ns3:HTTP>
+ <Soap xmlns:ns8="http://www.opengis.net/ows" xmlns="" ns4:href="http://localhost/SOAP/URL/for/GetCapabalities"/>
+ <Post xmlns:ns8="http://www.opengis.net/ows" xmlns="" ns4:href="http://localhost/please/replace/me/by/my/DescribeCoverage/URL"/>
+ </ns3:HTTP>
+ </ns3:DCP>
+ </ns3:Operation>
+ </ns3:OperationsMetadata>
+ <ns2:Contents>
+ <ns2:CoverageSummary>
+ <Title>Coverage SEGY002</Title>
+ <Abstract>Available coverage, fetched from the database</Abstract>
+ <Identifier xmlns:ns8="http://www.opengis.net/ows" xmlns="">SEGY002</Identifier>
+ </ns2:CoverageSummary>
+ <ns2:CoverageSummary>
+ <Title>Coverage Boonsville_SEGY</Title>
+ <Abstract>Available coverage, fetched from the database</Abstract>
+ <Identifier xmlns:ns8="http://www.opengis.net/ows" xmlns="">Boonsville_SEGY</Identifier>
+ </ns2:CoverageSummary>
+ <ns2:CoverageSummary>
+ <Title>Coverage Waha_SEGY</Title>
+ <Abstract>Available coverage, fetched from the database</Abstract>
+ <Identifier xmlns:ns8="http://www.opengis.net/ows" xmlns="">Waha_SEGY</Identifier>
+ </ns2:CoverageSummary>
+ <ns2:CoverageSummary>
+ <Title>Coverage mr</Title>
+ <Abstract>Available coverage, fetched from the database</Abstract>
+ <Identifier xmlns:ns8="http://www.opengis.net/ows" xmlns="">mr</Identifier>
+ </ns2:CoverageSummary>
+ <ns2:CoverageSummary>
+ <Title>Coverage rgb</Title>
+ <Abstract>Available coverage, fetched from the database</Abstract>
+ <Identifier xmlns:ns8="http://www.opengis.net/ows" xmlns="">rgb</Identifier>
+ </ns2:CoverageSummary>
+ <ns2:CoverageSummary>
+ <Title>Coverage nrg</Title>
+ <Abstract>Available coverage, fetched from the database</Abstract>
+ <Identifier xmlns:ns8="http://www.opengis.net/ows" xmlns="">nrg</Identifier>
+ </ns2:CoverageSummary>
+ <ns2:CoverageSummary>
+ <Title>Coverage Modis</Title>
+ <Abstract>Available coverage, fetched from the database</Abstract>
+ <Identifier xmlns:ns8="http://www.opengis.net/ows" xmlns="">Modis</Identifier>
+ </ns2:CoverageSummary>
+ <ns2:CoverageSummary>
+ <Title>Coverage mowglie</Title>
+ <Abstract>Available coverage, fetched from the database</Abstract>
+ <Identifier xmlns:ns8="http://www.opengis.net/ows" xmlns="">mowglie</Identifier>
+ </ns2:CoverageSummary>
+ <ns2:CoverageSummary>
+ <Title>Coverage whatevereeeee</Title>
+ <Abstract>Available coverage, fetched from the database</Abstract>
+ <Identifier xmlns:ns8="http://www.opengis.net/ows" xmlns="">whatevereeeee</Identifier>
+ </ns2:CoverageSummary>
+ <ns2:CoverageSummary>
+ <Title>Coverage climate_temperature</Title>
+ <Abstract>Available coverage, fetched from the database</Abstract>
+ <Identifier xmlns:ns8="http://www.opengis.net/ows" xmlns="">climate_temperature</Identifier>
+ </ns2:CoverageSummary>
+ <ns2:CoverageSummary>
+ <Title>Coverage NN3_1</Title>
+ <Abstract>Available coverage, fetched from the database</Abstract>
+ <Identifier xmlns:ns8="http://www.opengis.net/ows" xmlns="">NN3_1</Identifier>
+ </ns2:CoverageSummary>
+ <ns2:CoverageSummary>
+ <Title>Coverage NN3_2</Title>
+ <Abstract>Available coverage, fetched from the database</Abstract>
+ <Identifier xmlns:ns8="http://www.opengis.net/ows" xmlns="">NN3_2</Identifier>
+ </ns2:CoverageSummary>
+ <ns2:CoverageSummary>
+ <Title>Coverage NN3_3</Title>
+ <Abstract>Available coverage, fetched from the database</Abstract>
+ <Identifier xmlns:ns8="http://www.opengis.net/ows" xmlns="">NN3_3</Identifier>
+ </ns2:CoverageSummary>
+ <ns2:CoverageSummary>
+ <Title>Coverage NN3_4</Title>
+ <Abstract>Available coverage, fetched from the database</Abstract>
+ <Identifier xmlns:ns8="http://www.opengis.net/ows" xmlns="">NN3_4</Identifier>
+ </ns2:CoverageSummary>
+ <ns2:CoverageSummary>
+ <Title>Coverage NN3_5</Title>
+ <Abstract>Available coverage, fetched from the database</Abstract>
+ <Identifier xmlns:ns8="http://www.opengis.net/ows" xmlns="">NN3_5</Identifier>
+ </ns2:CoverageSummary>
+ <ns2:CoverageSummary>
+ <Title>Coverage NN3_6</Title>
+ <Abstract>Available coverage, fetched from the database</Abstract>
+ <Identifier xmlns:ns8="http://www.opengis.net/ows" xmlns="">NN3_6</Identifier>
+ </ns2:CoverageSummary>
+ <ns2:CoverageSummary>
+ <Title>Coverage NN3_7</Title>
+ <Abstract>Available coverage, fetched from the database</Abstract>
+ <Identifier xmlns:ns8="http://www.opengis.net/ows" xmlns="">NN3_7</Identifier>
+ </ns2:CoverageSummary>
+ <ns2:CoverageSummary>
+ <Title>Coverage NN3_8</Title>
+ <Abstract>Available coverage, fetched from the database</Abstract>
+ <Identifier xmlns:ns8="http://www.opengis.net/ows" xmlns="">NN3_8</Identifier>
+ </ns2:CoverageSummary>
+ <ns2:CoverageSummary>
+ <Title>Coverage NN3_9</Title>
+ <Abstract>Available coverage, fetched from the database</Abstract>
+ <Identifier xmlns:ns8="http://www.opengis.net/ows" xmlns="">NN3_9</Identifier>
+ </ns2:CoverageSummary>
+ <ns2:CoverageSummary>
+ <Title>Coverage NN3_10</Title>
+ <Abstract>Available coverage, fetched from the database</Abstract>
+ <Identifier xmlns:ns8="http://www.opengis.net/ows" xmlns="">NN3_10</Identifier>
+ </ns2:CoverageSummary>
+ <ns2:CoverageSummary>
+ <Title>Coverage NN3_11</Title>
+ <Abstract>Available coverage, fetched from the database</Abstract>
+ <Identifier xmlns:ns8="http://www.opengis.net/ows" xmlns="">NN3_11</Identifier>
+ </ns2:CoverageSummary>
+ <ns2:CoverageSummary>
+ <Title>Coverage TP</Title>
+ <Abstract>Available coverage, fetched from the database</Abstract>
+ <Identifier xmlns:ns8="http://www.opengis.net/ows" xmlns="">TP</Identifier>
+ </ns2:CoverageSummary>
+ <ns2:CoverageSummary>
+ <Title>Coverage climate_clouds</Title>
+ <Abstract>Available coverage, fetched from the database</Abstract>
+ <Identifier xmlns:ns8="http://www.opengis.net/ows" xmlns="">climate_clouds</Identifier>
+ </ns2:CoverageSummary>
+ <ns2:CoverageSummary>
+ <Title>Coverage climate_earth</Title>
+ <Abstract>Available coverage, fetched from the database</Abstract>
+ <Identifier xmlns:ns8="http://www.opengis.net/ows" xmlns="">climate_earth</Identifier>
+ </ns2:CoverageSummary>
+ <ns2:CoverageSummary>
+ <Title>Coverage NIR</Title>
+ <Abstract>Available coverage, fetched from the database</Abstract>
+ <Identifier xmlns:ns8="http://www.opengis.net/ows" xmlns="">NIR</Identifier>
+ </ns2:CoverageSummary>
+ </ns2:Contents>
+</ns2:Capabilities>
diff --git a/petascope/test/testcases-wcs/output/CoverageDescriptions1.xml b/petascope/test/testcases-wcs/output/CoverageDescriptions1.xml
new file mode 100644
index 0000000..0844d0c
--- /dev/null
+++ b/petascope/test/testcases-wcs/output/CoverageDescriptions1.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<ExceptionReport xmlns="http://www.opengis.net/ows" xmlns:ns2="http://www.w3.org/1999/xlink" language="en" version="1.0.0">
+ <Exception locator="Could not connect to the metadata database!" exceptionCode="NoApplicableCode"/>
+</ExceptionReport>
diff --git a/petascope/test/testcases-wcs/output/CoverageDescriptions2.xml b/petascope/test/testcases-wcs/output/CoverageDescriptions2.xml
new file mode 100644
index 0000000..84b073f
--- /dev/null
+++ b/petascope/test/testcases-wcs/output/CoverageDescriptions2.xml
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<ns2:CoverageDescriptions xmlns="http://www.opengis.net/ows" xmlns:ns2="http://www.opengis.net/wcs/1.1" xmlns:ns3="http://www.opengis.net/wcs/1.1/ows" xmlns:ns4="http://www.w3.org/1999/xlink" xmlns:ns5="http://www.opengis.net/gml" xmlns:ns6="http://www.w3.org/2001/SMIL20/" xmlns:ns7="http://www.w3.org/2001/SMIL20/Language">
+ <ns2:CoverageDescription>
+ <Title>Coverage rgb</Title>
+ <Abstract>Available coverage, fetched from the database</Abstract>
+ <ns2:Identifier>rgb</ns2:Identifier>
+ <ns2:Domain>
+ <ns2:SpatialDomain>
+ <BoundingBox xmlns:ns8="http://www.opengis.net/ows" xmlns="">
+ <ns8:LowerCorner>0.0 0.0</ns8:LowerCorner>
+ <ns8:UpperCorner>399.0 343.0</ns8:UpperCorner>
+ </BoundingBox>
+ </ns2:SpatialDomain>
+ </ns2:Domain>
+ <ns2:Range>
+ <ns2:Field>
+ <ns2:Identifier>red</ns2:Identifier>
+ <ns2:Definition>
+ <ns3:DataType>unsigned int</ns3:DataType>
+ </ns2:Definition>
+ <ns3:InterpolationMethods>
+ <ns3:DefaultMethod nullResistance="none">unsigned short</ns3:DefaultMethod>
+ </ns3:InterpolationMethods>
+ </ns2:Field>
+ <ns2:Field>
+ <ns2:Identifier>green</ns2:Identifier>
+ <ns2:Definition>
+ <ns3:DataType>unsigned int</ns3:DataType>
+ </ns2:Definition>
+ <ns3:InterpolationMethods>
+ <ns3:DefaultMethod nullResistance="none">unsigned short</ns3:DefaultMethod>
+ </ns3:InterpolationMethods>
+ </ns2:Field>
+ <ns2:Field>
+ <ns2:Identifier>blue</ns2:Identifier>
+ <ns2:Definition>
+ <ns3:DataType>unsigned int</ns3:DataType>
+ </ns2:Definition>
+ <ns3:InterpolationMethods>
+ <ns3:DefaultMethod nullResistance="none">unsigned short</ns3:DefaultMethod>
+ </ns3:InterpolationMethods>
+ </ns2:Field>
+ </ns2:Range>
+ <ns2:SupportedCRS></ns2:SupportedCRS>
+ <ns2:SupportedFormat>text/xml</ns2:SupportedFormat>
+ </ns2:CoverageDescription>
+ <ns2:CoverageDescription>
+ <Title>Coverage mr</Title>
+ <Abstract>Available coverage, fetched from the database</Abstract>
+ <ns2:Identifier>mr</ns2:Identifier>
+ <ns2:Domain>
+ <ns2:SpatialDomain>
+ <BoundingBox xmlns:ns8="http://www.opengis.net/ows" xmlns="">
+ <ns8:LowerCorner>0.0 0.0</ns8:LowerCorner>
+ <ns8:UpperCorner>255.0 210.0</ns8:UpperCorner>
+ </BoundingBox>
+ </ns2:SpatialDomain>
+ </ns2:Domain>
+ <ns2:Range>
+ <ns2:Field>
+ <ns2:Identifier>green</ns2:Identifier>
+ <ns2:Definition>
+ <ns3:DataType>unsigned int</ns3:DataType>
+ </ns2:Definition>
+ <ns3:InterpolationMethods>
+ <ns3:DefaultMethod nullResistance="none">unsigned short</ns3:DefaultMethod>
+ </ns3:InterpolationMethods>
+ </ns2:Field>
+ <ns2:Field>
+ <ns2:Identifier>grey</ns2:Identifier>
+ <ns2:Definition>
+ <ns3:DataType>unsigned int</ns3:DataType>
+ </ns2:Definition>
+ <ns3:InterpolationMethods>
+ <ns3:DefaultMethod nullResistance="none">unsigned short</ns3:DefaultMethod>
+ </ns3:InterpolationMethods>
+ </ns2:Field>
+ </ns2:Range>
+ <ns2:SupportedCRS></ns2:SupportedCRS>
+ <ns2:SupportedFormat>text/xml</ns2:SupportedFormat>
+ </ns2:CoverageDescription>
+ <ns2:CoverageDescription>
+ <Title>Coverage mowglie</Title>
+ <Abstract>Available coverage, fetched from the database</Abstract>
+ <ns2:Identifier>mowglie</ns2:Identifier>
+ <ns2:Domain>
+ <ns2:SpatialDomain>
+ <BoundingBox xmlns:ns8="http://www.opengis.net/ows" xmlns="">
+ <ns8:LowerCorner>0.0 0.0</ns8:LowerCorner>
+ <ns8:UpperCorner>119.0 158.0</ns8:UpperCorner>
+ </BoundingBox>
+ </ns2:SpatialDomain>
+ </ns2:Domain>
+ <ns2:Range>
+ <ns2:Field>
+ <ns2:Identifier>red</ns2:Identifier>
+ <ns2:Definition>
+ <ns3:DataType>unsigned int</ns3:DataType>
+ </ns2:Definition>
+ <ns3:InterpolationMethods>
+ <ns3:DefaultMethod nullResistance="none">unsigned short</ns3:DefaultMethod>
+ </ns3:InterpolationMethods>
+ </ns2:Field>
+ <ns2:Field>
+ <ns2:Identifier>green</ns2:Identifier>
+ <ns2:Definition>
+ <ns3:DataType>unsigned int</ns3:DataType>
+ </ns2:Definition>
+ <ns3:InterpolationMethods>
+ <ns3:DefaultMethod nullResistance="none">unsigned short</ns3:DefaultMethod>
+ </ns3:InterpolationMethods>
+ </ns2:Field>
+ <ns2:Field>
+ <ns2:Identifier>blue</ns2:Identifier>
+ <ns2:Definition>
+ <ns3:DataType>unsigned int</ns3:DataType>
+ </ns2:Definition>
+ <ns3:InterpolationMethods>
+ <ns3:DefaultMethod nullResistance="none">unsigned short</ns3:DefaultMethod>
+ </ns3:InterpolationMethods>
+ </ns2:Field>
+ </ns2:Range>
+ <ns2:SupportedCRS></ns2:SupportedCRS>
+ <ns2:SupportedFormat>text/xml</ns2:SupportedFormat>
+ </ns2:CoverageDescription>
+</ns2:CoverageDescriptions>
diff --git a/petascope/test/testcases-wcs/output/ProcessCoverage1.xml b/petascope/test/testcases-wcs/output/ProcessCoverage1.xml
new file mode 100644
index 0000000..a2c0d9f
--- /dev/null
+++ b/petascope/test/testcases-wcs/output/ProcessCoverage1.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<processCoverage xmlns="http://www.opengis.net/wcps/1.0.0" version="1.0.0" service="WCPS">
+ <coverageIterator>
+ <iteratorVar>var</iteratorVar>
+ <coverageName>NIR</coverageName>
+ </coverageIterator>
+ <encode store="false">
+ <format>jpg</format>
+ <trim>
+ <trimAxisSpec>
+ <axis>x</axis>
+ <domainCoord xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:int">0</domainCoord>
+ <domainCoord xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:int">450</domainCoord>
+ </trimAxisSpec>
+ <trim>
+ <trimAxisSpec>
+ <axis>y</axis>
+ <domainCoord xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:int">0</domainCoord>
+ <domainCoord xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:int">300</domainCoord>
+ </trimAxisSpec>
+ <coverage>var</coverage>
+ </trim>
+ </trim>
+ </encode>
+</processCoverage>
diff --git a/petascope/test/testcases-wcs/output/ProcessCoverage2.xml b/petascope/test/testcases-wcs/output/ProcessCoverage2.xml
new file mode 100644
index 0000000..c8b95bf
--- /dev/null
+++ b/petascope/test/testcases-wcs/output/ProcessCoverage2.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<processCoverage xmlns="http://www.opengis.net/wcps/1.0.0" version="1.0.0" service="WCPS">
+ <coverageIterator>
+ <iteratorVar>var</iteratorVar>
+ <coverageName>TBD</coverageName>
+ </coverageIterator>
+ <encode store="false">
+ <format>image/gif</format>
+ <trim>
+ <trimAxisSpec>
+ <axis>x</axis>
+ <domainCoord>9999.0</domainCoord>
+ <domainCoord>23.0</domainCoord>
+ </trimAxisSpec>
+ <trim>
+ <trimAxisSpec>
+ <axis>y</axis>
+ <domainCoord>56.0</domainCoord>
+ <domainCoord>9999.0</domainCoord>
+ </trimAxisSpec>
+ <setInterpolationDefault>
+ <field>TBDField</field>
+ <interpolationMethod>nearest neighbor</interpolationMethod>
+ <nullResistance>full</nullResistance>
+ <combine>
+ <component>
+ <field>TBDField</field>
+ <coverage>var</coverage>
+ </component>
+ </combine>
+ </setInterpolationDefault>
+ </trim>
+ </trim>
+ </encode>
+</processCoverage>
diff --git a/petascope/test/testcases-wcs/output/ProcessCoverage3.xml b/petascope/test/testcases-wcs/output/ProcessCoverage3.xml
new file mode 100644
index 0000000..18530c3
--- /dev/null
+++ b/petascope/test/testcases-wcs/output/ProcessCoverage3.xml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<processCoverage xmlns="http://www.opengis.net/wcps/1.0.0" version="1.0.0" service="WCPS">
+ <coverageIterator>
+ <iteratorVar>var</iteratorVar>
+ <coverageName>rgb</coverageName>
+ </coverageIterator>
+ <encode store="true">
+ <format>image/GeoTIFF</format>
+ <trim>
+ <trimAxisSpec>
+ <axis>x</axis>
+ <domainCoord>0.0</domainCoord>
+ <domainCoord>300.0</domainCoord>
+ </trimAxisSpec>
+ <trim>
+ <trimAxisSpec>
+ <axis>y</axis>
+ <domainCoord>0.0</domainCoord>
+ <domainCoord>300.0</domainCoord>
+ </trimAxisSpec>
+ <crsTransform>
+ <crsTransformAxisSpec>
+ <axis>x</axis>
+ <crs>urn:ogc:def:crs:EPSG::26910</crs>
+ </crsTransformAxisSpec>
+ <crsTransformAxisSpec>
+ <axis>y</axis>
+ <crs>urn:ogc:def:crs:EPSG::26910</crs>
+ </crsTransformAxisSpec>
+ <crsTransformFieldSpec/>
+ <setInterpolationDefault>
+ <field>Wavelength</field>
+ <interpolationMethod>nearest neighbor</interpolationMethod>
+ <nullResistance>none</nullResistance>
+ <combine>
+ <component>
+<field>Wavelength</field>
+<coverage>var</coverage>
+ </component>
+ </combine>
+ </setInterpolationDefault>
+ </crsTransform>
+ </trim>
+ </trim>
+ </encode>
+</processCoverage>
diff --git a/petascope/test/testcases-wcs/output/ProcessCoverage4.xml b/petascope/test/testcases-wcs/output/ProcessCoverage4.xml
new file mode 100644
index 0000000..5ea9826
--- /dev/null
+++ b/petascope/test/testcases-wcs/output/ProcessCoverage4.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<ExceptionReport xmlns="http://www.opengis.net/ows" xmlns:ns2="http://www.w3.org/1999/xlink" language="en" version="1.0.0">
+ <Exception locator="Currently, the Output-&gt;GridCRS node is not supported !" exceptionCode="NoApplicableCode"/>
+</ExceptionReport>
diff --git a/petascope/test/testcases-wcs/working/DescribeCoverage.1.xml b/petascope/test/testcases-wcs/working/DescribeCoverage.1.xml
new file mode 100644
index 0000000..3ed2735
--- /dev/null
+++ b/petascope/test/testcases-wcs/working/DescribeCoverage.1.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<DescribeCoverage xmlns="http://www.opengis.net/wcs/1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wcs/1.1 ../wcsDescribeCoverage.xsd" service="WCS" version="1.1.2">
+ <!-- <Identifier>mr</Identifier> -->
+ <Identifier>rgb</Identifier>
+ <Identifier>mr</Identifier>
+ <Identifier>mowglie</Identifier>
+</DescribeCoverage> \ No newline at end of file
diff --git a/petascope/test/testcases-wcs/working/GetCapabilities.xml b/petascope/test/testcases-wcs/working/GetCapabilities.xml
new file mode 100644
index 0000000..0cfae50
--- /dev/null
+++ b/petascope/test/testcases-wcs/working/GetCapabilities.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<GetCapabilities xmlns="http://www.opengis.net/wcs/1.1"
+ xmlns:owcs="http://www.opengis.net/wcs/1.1/ows"
+ service="WCS">
+ <owcs:AcceptVersions>
+ <owcs:Version>1.0.0</owcs:Version>
+ <owcs:Version>0.8.3</owcs:Version>
+ </owcs:AcceptVersions>
+ <owcs:Sections>
+ <owcs:Section>Contents</owcs:Section>
+ </owcs:Sections>
+ <owcs:AcceptFormats>
+ <owcs:OutputFormat>text/xml</owcs:OutputFormat>
+ </owcs:AcceptFormats>
+</GetCapabilities>
diff --git a/petascope/test/testcases-wcs/working/GetCoverage.1.xml b/petascope/test/testcases-wcs/working/GetCoverage.1.xml
new file mode 100644
index 0000000..7326767
--- /dev/null
+++ b/petascope/test/testcases-wcs/working/GetCoverage.1.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<GetCoverage xmlns="http://www.opengis.net/wcs/1.1" xmlns:ows="http://www.opengis.net/ows" xmlns:owcs="http://www.opengis.net/wcs/1.1/ows" xmlns:gml="http://www.opengis.net/gml" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/wcs/1.1 ../wcsGetCoverage.xsd http://www.opengis.net/gml ../../../gml/3.1.1/base/gml.xsd" service="WCS" version="1.1.0">
+ <owcs:Identifier>NIR</owcs:Identifier>
+ <DomainSubset>
+ <ows:BoundingBox>
+ <ows:LowerCorner>0 0</ows:LowerCorner>
+ <ows:UpperCorner>450 450</ows:UpperCorner>
+ </ows:BoundingBox>
+ </DomainSubset>
+ <Output format="image/jpeg" />
+</GetCoverage> \ No newline at end of file
diff --git a/petascope/test/testcases-wcst/CoverageDescriptions1.xml b/petascope/test/testcases-wcst/CoverageDescriptions1.xml
new file mode 100644
index 0000000..b9cabba
--- /dev/null
+++ b/petascope/test/testcases-wcst/CoverageDescriptions1.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<ns2:CoverageDescriptions xmlns="http://www.opengis.net/ows" xmlns:ns2="http://www.opengis.net/wcs/1.1" xmlns:ns3="http://www.opengis.net/wcs/1.1/ows" xmlns:ns4="http://www.w3.org/1999/xlink" xmlns:ns5="http://www.opengis.net/gml" xmlns:ns6="http://www.w3.org/2001/SMIL20/" xmlns:ns7="http://www.w3.org/2001/SMIL20/Language" xmlns:ns8="http://www.opengis.net/ows">
+ <ns2:CoverageDescription>
+ <Title>Title 1 (Descriptions)</Title>
+ <Abstract>Test coverage (Description)</Abstract>
+ <ns2:Identifier>coverage_1</ns2:Identifier>
+ <ns2:Domain>
+ <ns2:SpatialDomain>
+ <ns8:BoundingBox>
+ <ns8:LowerCorner>0.0 0.0</ns8:LowerCorner>
+ <ns8:UpperCorner>399.0 343.0</ns8:UpperCorner>
+ </ns8:BoundingBox>
+ </ns2:SpatialDomain>
+ </ns2:Domain>
+ <ns2:Range>
+ <ns2:Field>
+ <ns2:Identifier>red</ns2:Identifier>
+ <ns2:Definition>
+ <ns3:DataType>unsigned short</ns3:DataType>
+ </ns2:Definition>
+ <ns3:InterpolationMethods>
+ <ns3:DefaultMethod nullResistance="none">none</ns3:DefaultMethod>
+ </ns3:InterpolationMethods>
+ </ns2:Field>
+ </ns2:Range>
+ <ns2:SupportedCRS></ns2:SupportedCRS>
+ <ns2:SupportedFormat>text/xml</ns2:SupportedFormat>
+ </ns2:CoverageDescription>
+</ns2:CoverageDescriptions>
diff --git a/petascope/test/testcases-wcst/CoverageDescriptions2.xml b/petascope/test/testcases-wcst/CoverageDescriptions2.xml
new file mode 100644
index 0000000..151e99c
--- /dev/null
+++ b/petascope/test/testcases-wcst/CoverageDescriptions2.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<ns2:CoverageDescriptions xmlns="http://www.opengis.net/ows" xmlns:ns2="http://www.opengis.net/wcs/1.1" xmlns:ns3="http://www.opengis.net/wcs/1.1/ows" xmlns:ns4="http://www.w3.org/1999/xlink" xmlns:ns5="http://www.opengis.net/gml" xmlns:ns6="http://www.w3.org/2001/SMIL20/" xmlns:ns7="http://www.w3.org/2001/SMIL20/Language" xmlns:ns8="http://www.opengis.net/ows">
+ <ns2:CoverageDescription>
+ <Title>Title 2 (Descriptions)</Title>
+ <Abstract>Test coverage (Description)</Abstract>
+ <ns2:Identifier>coverage_2</ns2:Identifier>
+ <ns2:Domain>
+ <ns2:SpatialDomain>
+ <ns8:BoundingBox>
+ <ns8:LowerCorner>0.0 0.0</ns8:LowerCorner>
+ <ns8:UpperCorner>399.0 343.0</ns8:UpperCorner>
+ </ns8:BoundingBox>
+ </ns2:SpatialDomain>
+ </ns2:Domain>
+ <ns2:Range>
+ <ns2:Field>
+ <ns2:Identifier>red</ns2:Identifier>
+ <ns2:Definition>
+ <ns3:DataType>unsigned short</ns3:DataType>
+ </ns2:Definition>
+ <ns3:InterpolationMethods>
+ <ns3:DefaultMethod nullResistance="none">none</ns3:DefaultMethod>
+ </ns3:InterpolationMethods>
+ </ns2:Field>
+ <ns2:Field>
+ <ns2:Identifier>blue</ns2:Identifier>
+ <ns2:Definition>
+ <ns3:DataType>weird</ns3:DataType>
+ </ns2:Definition>
+ <ns3:InterpolationMethods>
+ <ns3:DefaultMethod nullResistance="none">none</ns3:DefaultMethod>
+ </ns3:InterpolationMethods>
+ </ns2:Field>
+ </ns2:Range>
+ <ns2:SupportedCRS></ns2:SupportedCRS>
+ <ns2:SupportedFormat>text/xml</ns2:SupportedFormat>
+ </ns2:CoverageDescription>
+</ns2:CoverageDescriptions>
diff --git a/petascope/test/testcases-wcst/CoverageSummary1.xml b/petascope/test/testcases-wcst/CoverageSummary1.xml
new file mode 100644
index 0000000..651d4fe
--- /dev/null
+++ b/petascope/test/testcases-wcst/CoverageSummary1.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<ns2:CoverageSummary xmlns="http://www.opengis.net/ows" xmlns:ns2="http://www.opengis.net/wcs/1.1" xmlns:ns3="http://www.opengis.net/wcs/1.1/ows" xmlns:ns4="http://www.w3.org/1999/xlink" xmlns:ns5="http://www.opengis.net/gml" xmlns:ns6="http://www.w3.org/2001/SMIL20/" xmlns:ns7="http://www.w3.org/2001/SMIL20/Language" version="1.1.0">
+ <Title>Title1</Title>
+ <Abstract>Abstract1 (Summary)</Abstract>
+ <Identifier xmlns:ns8="http://www.opengis.net/ows" xmlns="">coverage_1</Identifier>
+</ns2:CoverageSummary>
diff --git a/petascope/test/testcases-wcst/CoverageSummary2.xml b/petascope/test/testcases-wcst/CoverageSummary2.xml
new file mode 100644
index 0000000..78a78d9
--- /dev/null
+++ b/petascope/test/testcases-wcst/CoverageSummary2.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<ns2:CoverageSummary xmlns="http://www.opengis.net/ows" xmlns:ns2="http://www.opengis.net/wcs/1.1" xmlns:ns3="http://www.opengis.net/wcs/1.1/ows" xmlns:ns4="http://www.w3.org/1999/xlink" xmlns:ns5="http://www.opengis.net/gml" xmlns:ns6="http://www.w3.org/2001/SMIL20/" xmlns:ns7="http://www.w3.org/2001/SMIL20/Language" version="1.1.0">
+ <Title>Title2</Title>
+ <Abstract>Abstract2 (Summary)</Abstract>
+ <Identifier xmlns:ns8="http://www.opengis.net/ows" xmlns="">coverage_2</Identifier>
+</ns2:CoverageSummary>
diff --git a/petascope/test/testcases-wcst/Transaction1-async.xml b/petascope/test/testcases-wcst/Transaction1-async.xml
new file mode 100644
index 0000000..ba626ab
--- /dev/null
+++ b/petascope/test/testcases-wcst/Transaction1-async.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Document : Transaction1.xml
+ Created on : March 16, 2009, 10:37 PM
+ Author : Andrei
+ Description:
+ Test operation Transaction of WCS, action ADD: add one coverage to the WCS server, asynchroneously !
+-->
+<Transaction xmlns="http://www.opengis.net/wcs/1.1/wcst"
+xmlns:xlink="http://www.w3.org/1999/xlink"
+xmlns:ows="http://www.opengis.net/ows/1.1"
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:schemaLocation="http://www.opengis.net/wcs/1.1/wcst ../../src/conf/xml-resources/jaxb/WCS-Transaction Schema/wcstTransaction.xsd"
+service="WCS" version="1.1">
+ <InputCoverages>
+ <Coverage>
+ <ows:Identifier codeSpace="TBD">coverage_1</ows:Identifier>
+ <ows:Reference xlink:href="http://localhost/peta/flickr1.jpg"
+ xlink:role="urn:ogc:def:role:WCS:1.1:Pixels"/>
+ <ows:Reference xlink:href="http://localhost/peta/CoverageDescriptions1.xml"
+ xlink:role="urn:ogc:def:role:WCS:1.1:CoverageDescription"/>
+ <ows:Reference xlink:href="http://localhost/peta/CoverageSummary1.xml"
+ xlink:role="urn:ogc:def:role:WCS:1.1:CoverageSummary"/>
+ <Action>Add</Action>
+ </Coverage>
+ </InputCoverages>
+ <ResponseHandler>
+ http://localhost:8080/PetaScope/WCPService
+ </ResponseHandler>
+</Transaction>
diff --git a/petascope/test/testcases-wcst/Transaction1.xml b/petascope/test/testcases-wcst/Transaction1.xml
new file mode 100644
index 0000000..bc99400
--- /dev/null
+++ b/petascope/test/testcases-wcst/Transaction1.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Document : Transaction1.xml
+ Created on : March 16, 2009, 10:37 PM
+ Author : Andrei
+ Description:
+ Test operation Transaction of WCS, action ADD: add one coverage to the WCS server.
+-->
+<Transaction xmlns="http://www.opengis.net/wcs/1.1/wcst"
+xmlns:xlink="http://www.w3.org/1999/xlink"
+xmlns:ows="http://www.opengis.net/ows/1.1"
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:schemaLocation="http://www.opengis.net/wcs/1.1/wcst ../../src/conf/xml-resources/jaxb/WCS-Transaction Schema/wcstTransaction.xsd"
+service="WCS" version="1.1">
+ <InputCoverages>
+ <Coverage>
+ <ows:Identifier codeSpace="TBD">coverage_1</ows:Identifier>
+ <ows:Reference xlink:href="http://localhost/peta/flickr1.jpg"
+ xlink:role="urn:ogc:def:role:WCS:1.1:Pixels"/>
+ <ows:Reference xlink:href="http://localhost/peta/CoverageDescriptions1.xml"
+ xlink:role="urn:ogc:def:role:WCS:1.1:CoverageDescription"/>
+ <ows:Reference xlink:href="http://localhost/peta/CoverageSummary1.xml"
+ xlink:role="urn:ogc:def:role:WCS:1.1:CoverageSummary"/>
+ <Action>Add</Action>
+ </Coverage>
+ </InputCoverages>
+</Transaction>
diff --git a/petascope/test/testcases-wcst/Transaction2.xml b/petascope/test/testcases-wcst/Transaction2.xml
new file mode 100644
index 0000000..6f14c39
--- /dev/null
+++ b/petascope/test/testcases-wcst/Transaction2.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Document : Transaction1.xml
+ Created on : March 16, 2009, 10:37 PM
+ Author : Andrei
+ Description:
+ Test operation Transaction of WCS, action ADD: add multiple coverages.
+-->
+<Transaction xmlns="http://www.opengis.net/wcs/1.1/wcst"
+xmlns:xlink="http://www.w3.org/1999/xlink"
+xmlns:ows="http://www.opengis.net/ows/1.1"
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:schemaLocation="http://www.opengis.net/wcs/1.1/wcst ../../src/conf/xml-resources/jaxb/WCS-Transaction Schema/wcstTransaction.xsd"
+service="WCS" version="1.1">
+ <InputCoverages>
+ <Coverage>
+ <ows:Identifier codeSpace="TBD">coverage_1</ows:Identifier>
+ <ows:Reference xlink:href="http://localhost/peta/flickr1.jpg"
+ xlink:role="urn:ogc:def:role:WCS:1.1:Pixels"/>
+ <ows:Reference xlink:href="http://localhost/peta/CoverageDescriptions1.xml"
+ xlink:role="urn:ogc:def:role:WCS:1.1:CoverageDescription"/>
+ <ows:Reference xlink:href="http://localhost/peta/CoverageSummary1.xml"
+ xlink:role="urn:ogc:def:role:WCS:1.1:CoverageSummary"/>
+ <Action>Add</Action>
+ </Coverage>
+ <Coverage>
+ <ows:Identifier codeSpace="TBD">coverage_2</ows:Identifier>
+ <ows:Reference xlink:href="http://localhost/peta/flickr1.jpg"
+ xlink:role="urn:ogc:def:role:WCS:1.1:Pixels"/>
+ <ows:Reference xlink:href="http://localhost/peta/CoverageDescriptions2.xml"
+ xlink:role="urn:ogc:def:role:WCS:1.1:CoverageDescription"/>
+ <ows:Reference xlink:href="http://localhost/peta/CoverageSummary2.xml"
+ xlink:role="urn:ogc:def:role:WCS:1.1:CoverageSummary"/>
+ <Action>Add</Action>
+ </Coverage>
+ </InputCoverages>
+</Transaction>
diff --git a/petascope/test/testcases-wcst/Transaction3.xml b/petascope/test/testcases-wcst/Transaction3.xml
new file mode 100644
index 0000000..4bf4b99
--- /dev/null
+++ b/petascope/test/testcases-wcst/Transaction3.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Document : Transaction1.xml
+ Created on : March 16, 2009, 10:37 PM
+ Author : Andrei
+ Description:
+ Test operation Transaction of WCS, action DELETE one coverage.
+-->
+<Transaction xmlns="http://www.opengis.net/wcs/1.1/wcst"
+xmlns:xlink="http://www.w3.org/1999/xlink"
+xmlns:ows="http://www.opengis.net/ows/1.1"
+xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:schemaLocation="http://www.opengis.net/wcs/1.1/wcst ../../src/conf/xml-resources/jaxb/WCS-Transaction Schema/wcstTransaction.xsd"
+service="WCS" version="1.1">
+ <InputCoverages>
+ <Coverage>
+ <ows:Identifier codeSpace="TBD">coverage_1</ows:Identifier>
+ <Action>Delete</Action>
+ </Coverage>
+ </InputCoverages>
+</Transaction>
diff --git a/petascope/test/wcps_grammar.sh b/petascope/test/wcps_grammar.sh
new file mode 100755
index 0000000..a93dc1d
--- /dev/null
+++ b/petascope/test/wcps_grammar.sh
@@ -0,0 +1,16 @@
+#! /bin/bash
+# Run the grammar CLI tool
+
+if [ $# != 1 ]; then
+ echo "WCPS Abstract Syntax Grammar Test Tool."
+ echo "Parses an abstract syntax query and transforms it into XML for WCPS. "
+ echo "Third parameter (String) is the query. "
+ echo ""
+ echo "Usage: ./grammar queryString"
+ echo "For example: ./grammar \"for c in (nir) return encode(c,\"png\") "
+ exit 1
+fi
+
+CLASSPATH=.:../lib/wcps-all.jar:../lib/jaxb-api.jar:../lib/jaxb-impl.jar:../lib/postgresql-8.3-604.jdbc4.jar:../lib/jsr173_api.jar:../lib/rasj.jar:../lib/commons-math-1.1.jar:../lib/antlrworks-1.2.3.jar
+
+java -cp $CLASSPATH wcps.server.cli.grammar "$1"
diff --git a/petascope/test/wcps_xml.sh b/petascope/test/wcps_xml.sh
new file mode 100755
index 0000000..aadfd92
--- /dev/null
+++ b/petascope/test/wcps_xml.sh
@@ -0,0 +1,11 @@
+#! /bin/bash
+# Run the xml CLI tool.
+# Use as below: wcps_xml.sh testcases_wcps/1.test.xml
+# Input: ProcessCoverages XML document (WCPS 1.0.0)
+# Output: RasQL query (on the last line of output)
+
+CLASSPATH=.:lib/wcps-all.jar:lib/jaxb-api.jar:lib/jaxb-impl.jar:lib/postgresql-8.3-604.jdbc4.jar:lib/jsr173_api.jar:lib/rasj.jar:lib/commons-math-1.1.jar:lib/antlrworks-1.2.3.jar
+
+echo "Will run with file '$1'"
+
+cd .. && java -cp $CLASSPATH wcps.server.cli.xml test/$1
diff --git a/petascope/test/wcs/server/core/TimeStringTest.java b/petascope/test/wcs/server/core/TimeStringTest.java
new file mode 100644
index 0000000..8fb274d
--- /dev/null
+++ b/petascope/test/wcs/server/core/TimeStringTest.java
@@ -0,0 +1,140 @@
+/*
+ * This file is part of PetaScope.
+ *
+ * PetaScope is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of
+ * the License, or (at your option) any later version.
+ *
+ * PetaScope is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with PetaScope. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * For more information please see <http://www.PetaScope.org>
+ * or contact Peter Baumann via <baumann@rasdaman.com>.
+ *
+ * Copyright 2009 Jacobs University Bremen, Peter Baumann.
+ */
+
+package wcs.server.core;
+
+//~--- non-JDK imports --------------------------------------------------------
+
+import org.joda.time.DateTime;
+
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import petascope.wcs.server.core.TimeString;
+
+import static org.junit.Assert.*;
+
+/**
+ * Test class for TimeString ISO 8601 utility class.
+ * @author Andrei Aiordachioaie
+ */
+public class TimeStringTest
+{
+ public TimeStringTest() {}
+
+ @BeforeClass
+ public static void setUpClass() throws Exception {}
+
+ @AfterClass
+ public static void tearDownClass() throws Exception {}
+
+ @Test
+ public void testDate0()
+ {
+ System.out.println("date0");
+ TimeString t = new TimeString("2000");
+ DateTime date = t.getDateTime();
+
+ assertEquals(date.getYear(), 2000);
+ }
+
+ @Test
+ public void testDate1()
+ {
+ System.out.println("date1");
+ TimeString t = new TimeString("2009-06");
+ DateTime date = t.getDateTime();
+
+ assertEquals(2009, date.getYear());
+ assertEquals(6, date.getMonthOfYear());
+ }
+
+ @Test
+ public void testDate2()
+ {
+ System.out.println("date2");
+ DateTime date = TimeString.parse("2006-11-22");
+
+ assertEquals(2006, date.getYear());
+ assertEquals(11, date.getMonthOfYear());
+ assertEquals(22, date.getDayOfMonth());
+ }
+
+ @Test
+ public void testDate3()
+ {
+ System.out.println("date3");
+ DateTime date = TimeString.parse("2006-11-22T08");
+ long m = TimeString.parseMillis("2006-11-22T08");
+
+ assertEquals(2006, date.getYear());
+ assertEquals(11, date.getMonthOfYear());
+ assertEquals(22, date.getDayOfMonth());
+ assertEquals(8, date.getHourOfDay());
+ }
+
+ @Test
+ public void testDate4()
+ {
+ System.out.println("date4");
+ DateTime date = TimeString.parse("2006-11-22T08:11");
+ long m = TimeString.parseMillis("2006-11-22T08:11");
+
+ assertEquals(2006, date.getYear());
+ assertEquals(11, date.getMonthOfYear());
+ assertEquals(22, date.getDayOfMonth());
+ assertEquals(8, date.getHourOfDay());
+ assertEquals(11, date.getMinuteOfHour());
+ }
+
+ @Test
+ public void testDate5()
+ {
+ System.out.println("date5");
+ DateTime date = TimeString.parse("2006-11-22T08:55:00");
+ long m = TimeString.parseMillis("2006-11-22T08:55:00");
+
+ assertEquals(2006, date.getYear());
+ assertEquals(11, date.getMonthOfYear());
+ assertEquals(22, date.getDayOfMonth());
+ assertEquals(8, date.getHourOfDay());
+ assertEquals(55, date.getMinuteOfHour());
+ assertEquals(0, date.getSecondOfMinute());
+ }
+
+ @Test
+ public void testDate6()
+ {
+ System.out.println("date6");
+ DateTime date = TimeString.parse("1988-03-01T13:00:00.000Z");
+ long m = TimeString.parseMillis("2006-11-22T08:00:00.000Z");
+
+ assertEquals(1988, date.getYear());
+ assertEquals(3, date.getMonthOfYear());
+ assertEquals(1, date.getDayOfMonth());
+ assertEquals(14, date.getHourOfDay());
+ assertEquals(0, date.getMinuteOfHour());
+ assertEquals(0, date.getSecondOfMinute());
+ assertEquals(0, date.getMillisOfSecond());
+ }
+
+}