### Question:
SpaceFillingCurve { public Long derivedValueFor( double[] coord ) { return derivedValueFor( coord, maxLevel ); } SpaceFillingCurve( Envelope range, int maxLevel ); int getMaxLevel(); long getWidth(); long getValueWidth(); double getTileWidth( int dimension, int level ); Envelope getRange(); Long derivedValueFor( double[] coord ); Long derivedValueFor( long[] normalizedValues ); double[] centerPointFor( long derivedValue ); List<LongRange> getTilesIntersectingEnvelope( double[] fromOrNull, double[] toOrNull, SpaceFillingCurveConfiguration config );  }### Answer:
@Test void shouldCreate2DHilbertCurveOfThreeLevelsFromExampleInThePaper() { HilbertSpaceFillingCurve2D curve = new HilbertSpaceFillingCurve2D( new Envelope( 0, 8, 0, 8 ), 3 ); assertThat( "Example should evaluate to 101110", curve.derivedValueFor( new double[]{6, 4} ), equalTo( 46L ) ); }