This document specifies an abstract test suite (ATS) consisting of a set of
implementation-independent test cases that provide a basis for validating the
structure and content of OGC KML 2.3 resources. The ATS may be realized by an
executable test suite (ETS) that assesses the degree of conformance exhibited
by a KML document.
Three conformance levels are defined; these indicate the relative importance
or priority of a particular set of constraints. The highest level (CL3) indicates
full conformance, but a given application or user community may choose to enforce
a lower level of conformance.
Level 1 (CL1)
Includes test cases covering requirements that must be satisfied
in all instances.
Level 2 (CL2)
As for CL1, plus test cases addressing recommended requirements
that should be satisfied.
Level 3 (CL3)
As for CL2, plus test cases for optional constraints that are
essentially informative in nature.
Several namespace bindings are assumed in this document (see Table 1). However,
in an instance document the actual prefix bound to a given namespace is not
significant; any legal NCName may be used.
Table 1: Namespace bindings
Prefix
Namespace name
atom
http://www.w3.org/2005/Atom
kml
http://www.opengis.net/kml/2.2
xsd
http://www.w3.org/2001/XMLSchema
References
The following normative documents contain provisions that, through
reference in this text, constitute provisions of this document. For dated
references, subsequent revisions do not apply. For undated references,
the latest edition applies.
Conformance Level 1 includes test cases that address absolute requirements.
A KML document must satisfy all assertions at this level to achieve minimal
conformance.
Purpose: Verify that the root element of the document has [local name] = "kml"
and [namespace name] = "http://www.opengis.net/kml/2.3".
Method: Pass if all XML infoset constraints are satisfied; fail otherwise. This
test checks that an XML resource is indeed an OGC KML document. If this test fails,
all remaining tests are skipped.
Purpose: Verify that a kml:coordinates element contains a list of white space-separated
2D or 3D tuples that contain comma-separated decimal values (lon,lat[,hgt]).
Method: Pass if all kml:coordinates elements contain 2D/3D tuples containing decimal
values conforming to the xsd:decimal type; fail otherwise. White space consists of one
or more of the following characters: space (U+0020), carriage return (U+000D), line feed
(U+000A), or tab (U+0009). The applicable coordinate reference system (CRS) is defined
in Annex B of the OGC KML specification.
References:
OGC 12-007r2, 16.10: kml:coordinatesType
OGC 12-007r2, Annex B: KML Coordinate Reference System Definition
W3C XML Schema Definition Language (XSD) 1.1 Part 2: Datatypes - decimal
Purpose: Verify that a kml:TimeStamp element has a valid child kml:when element.
Method: Pass if the assertion is satisfied; fail otherwise. Several truncated
representations of the xsd:dateTime data type are permitted: date, gYearMonth, and
gYear. A time zone indicator is allowed.
References:
OGC 12-007r2, 15.3.2
W3C XML Schema Definition Language (XSD) 1.1 Part 2: Datatypes - Primitive Datatypes
Purpose: Check that a kml:styleUrl element satisfies all of the following constraints:
its value is a valid relative or absolute URL that refers to a shared style definition
(any element that substitutes for kml:AbstractStyleSelectorGroup);
if the reference is an absolute URI, it conforms to the 'http' or 'file' URI schemes;
it includes a fragment identifier that conforms to the shorthand pointer syntax
as defined in the W3C XPointer framework.
Method: Pass if all applicable assertions are satisfied; fail otherwise. A relative
URL is resolved according to the reference resolution algorithm described in section 5
of RFC 3986.
Purpose: Confirm that a shared style definition (any element that may substitute for
kml:AbstractStyleSelectorGroup) satisfies all of the following constraints:
its parent element is kml:Document;
it has an 'id' attribute value.
Method: Pass if all assertions are satisfied; fail otherwise. Shared styles include
kml:Style and kml:StyleMap elements that appear as children of a kml:Document element.
Purpose: Verify that the content of a kml:LatLonAltBox element satisfies all of
the following conditions:
kml:north > kml:south;
kml:east > kml:west;
kml:minAltitude <= kml:maxAltitude;
if kml:minAltitude and kml:maxAltitude are both present, then kml:altitudeMode
does not have the value "clampToGround".
Method: Pass if all applicable constraints are satisfied; fail otherwise. The
default envelope for a region is the entire surface of the EGM96 geoid. These checks
verify that a region has a non-zero extent (a 3D envelope).
Purpose: Verify that the content of a kml:LatLonBox or kml:LatLonAltBox element
satisfies all of the following constraints:
it contains the kml:north, kml:south, kml:east, and kml:west elements;
kml:north > kml:south;
kml:east > kml:west.
Method: Pass if all assertions are satisfied; fail otherwise. The default
envelope for a kml:GroundOverlay feature is the entire surface of the WGS 84
ellipsoid. These constraints verify that a bounding box has a non-zero area.
Purpose: Check that if the kml:extrude element has the value "true", then
the value of (the sibling element) kml:altitudeMode is not
"clampToGround".
Method: Pass if the assertion is satisfied; fail otherwise. This applies to
the following elements: kml:Point, kml:LineString, kml:LinearRing (but NOT if
it forms the boundary of a polygon), and kml:Polygon.
Purpose: Confirm that if the kml:tessellate element has the value "true",
then the value of kml:altitudeMode is "clampToGround" (default value).
Method: Pass if the assertion is satisfied; fail otherwise. This applies to
the following elements: kml:LineString, kml:LinearRing (but NOT if it forms the
boundary of a polygon), and kml:Polygon.
Purpose: Verify that the boundary of a kml:Polygon element satisfies all
of the following constraints:
if it is not a descendant of kml:Update, then the kml:Polygon has a child
kml:outerBoundaryIs element containing a kml:LinearRing element;
each interior boundary defines a "hole" in the Polygon such that it lies
within the exterior boundary.
Method: Pass if all assertions are satisfied; fail otherwise. This test case
verifies the fundamental structure of a polygon; curve orientation (coordinates
order) is ignored. The relevant polygons are identified using this XPath
expression: //kml:Polygon[not(ancestor::kml:Update)].
Purpose: Verify that the kml:Icon/kml:href element refers to an image resource.
Method: Pass if the assertion is satisfied; fail otherwise. The image format must
correspond to a registered image media type, image/* (PNG, JPEG, and GIF
images are commonly used). This test case applies to kml:Icon elements in both
kml:IconStyle and kml:AbstractOverlayType contexts.
Purpose: Verify that a kml:ViewVolume element includes all of the following child
elements: kml:leftFov, kml:rightFov, kml:bottomFov, kml:topFov, and kml:near (has
non-negative value).
Method: Pass if all expected elements are present; fail otherwise. The field of
view for a PhotoOverlay is defined by four planes, each of which is specified by an
angle relative to the view vector.
Purpose: Verify that the kml:NetworkLinkControl/kml:minRefreshPeriod element has
a non-negative value (>=0).
Method: Pass if the assertion is satisfied; fail otherwise. This element
specifies the minimum time interval (in seconds) between refreshes of the
referenced KML resource.
Purpose: Check that the value of the kml:Update/kml:targetHref element is an absolute
URI that refers to a KML or KMZ resource.
Method: Pass if the assertion is satisfied; fail otherwise. The URI is assumed to
match the retrieval URI for a resource that was previously loaded (by some earth browser)
with a network link (kml:NetworkLink/kml:Link/kml:href).
Purpose: Check that a KML object which is a descendant (grandchild) of kml:Update
satisfies the following constraints:
it includes a 'targetId' attribute value that identifies the object to be updated;
it does not have an 'id' attribute.
Method: Pass if all assertions are satisfied; fail otherwise. Examine the content
of all kml:Create, kml:Delete and kml:Change elements comprising the update.
Purpose: Check that the value of the kml:phoneNumber element is a valid 'tel' URI
that complies with RFC
3966 ("The tel URI for Telephone Numbers").
Method: Pass if the assertion is satisfied; fail otherwise. The "tel" URI is
a globally unique identifier only; it does not refer to a specific physical
device.
Purpose: Confirm that a kml:SchemaData element satisfies all of the following
constraints:
the 'schemaUrl' attribute value is a URL (it may be an absolute URI)
with a fragment component that refers to a kml:Schema element;
all kml:SimpleData child elements have a 'name' attribute that
matches the name of a declared kml:SimpleField element in the associated
kml:Schema element (see ATC-126);
the values of all kml:SimpleData child elements conform to their
declared types.
Method: Pass if all assertions are satisfied; fail otherwise. This element
is used in conjunction with kml:Schema to add (loosely) typed custom data to a
KML feature.
References:
OGC 12-007r2, 9.5.2
OGC 12-007r2, 9.6.2
Uniform Resource Identifier (URI): Generic Syntax - Fragment (RFC
3986)
Purpose: Verify that a kml:Alias element satisfies all of the following assertions:
the value of the child kml:targetHref element is a URI reference to an
image (texture) resource;
the value of the child kml:sourceHref element corresponds to a file reference
that appears within the 3D object resource referenced in the preceding sibling
kml:Link element.
Method: Pass if all assertions are satisfied; fail otherwise. The source
file is expected to be a textual (including XML) digital asset resource such
as a COLLADA file.
Purpose: Check that an atom:author element satisfies all of the following assertions:
the content of the child atom:uri element is an IRI reference;
the content of the child atom:email element conforms to the "addr-spec"
production rule in RFC 5322 (Internet Message Format).
Method: Pass if all assertions are satisfied; fail otherwise. The content
model is specified by the atomPersonConstruct pattern in the RELAX
NG schema. Note that within a container element authorship is inherited by all
child feature members; it may be overridden on a per-feature basis.
Purpose: Verify that if a kml:Orientation element is not a descendant of kml:Update,
then it contains at least one of the following elements: kml:heading, kml:tilt, or
kml:roll.
Method: Pass if the assertion is satisfied; fail otherwise.
Purpose: Check that a kml:Model element adheres to all of the following constraints
if it is not a descendant of kml:Update:
it contains a child kml:Link element (refers to a 3D model);
it has a child kml:Location element (specifies model position);
if the referenced model has any associated texture files, then there is
a kml:ResourceMap/kml:Alias element for each one.
Method: Pass if all assertions are satisfied; fail otherwise. The KML standard does
not mention any particular type of 3D model. However, Google Earth only handles COLLADA
files (model/vnd.collada+xml).
Purpose: Check that if a kml:PhotoOverlay element is not a descendant of kml:Update,
then it has all of the following child elements: kml:Icon, kml:ViewVolume, kml:Point,
and kml:Camera.
Method: Pass if all assertions are satisfied; fail otherwise.
Purpose: Check that if a kml:Pair element is not a descendant of kml:Update, then it
contains the following elements:
a kml:key element (identifies the style mode);
a kml:styleURL or kml:Style element.
Method: Pass if the assertions are satisfied; fail otherwise. The parent
kml:StyleMap element contains alternative styles that apply for a particular mode;
two values are defined in kml:styleStateEnumType: "normal" (default) and "highlight".
Purpose: Check that if a kml:ItemIcon element is not a descendant of kml:Update,
then it satisfies all of the following constraints:
it has a kml:href child element that refers to an image resource;
if its state includes the values "error" or "fetchingN" (where N = 0-2),
then the associated feature is a NetworkLink.
Method: Pass if all assertions are satisfied; fail otherwise. The referenced
image is the icon used to indicate the state of a Folder or Link fetch. The
ancestor Style element may be referenced from or contained within the feature
that uses it.
Purpose: Check that a kml:LookAt element satisfies all of the following constraints:
if it is not a descendant of kml:Update, it contains all of the following
child elements: kml:longitude, kml:latitude, and kml:range;
0 <= kml:tilt <= 90;
if kml:altitudeMode does not have the value "clampToGround", then the
kml:altitude element is present.
Method: Pass if all assertions are satisfied; fail otherwise. The LookAt element
positions a "virtual camera" in relation to the feature that is being viewed.
Method: Pass if all assertions are satisfied; fail otherwise. The visibility
of a region (and its associated features) is determined as indicated below, where
P denotes the calculated projected pixel size.
if (P < minLodPixels)
opacity = 0
else if (P < minLodPixels + minFadeExtent)
opacity = (P - minLodPixels)/minFadeExtent
else if (P < maxLodPixels - maxFadeExtent)
opacity = 1
else if (P < maxLodPixels)
opacity = (maxLodPixels-P)/maxFadeExtent
else
opacity=0
Purpose: Check that if a kml:Link or a kml:Icon element (both of type
kml:LinkType) is not a descendant of kml:Update, then it contains a kml:href
child element.
Method: Pass if the assertion is satisfied; fail otherwise. The value is a
URI reference. The type of resource referred to depends on the parent element
(see ATC-110).
Purpose: Verify that if a kml:Tour element is not a descendant of kml:Update,
then it has a kml:Playlist child element that contains one or more tour primitives.
Method: Pass if the assertion is satisfied; fail otherwise. A virtual tour
consists of a sequence of tour primitives. A tour primitive is any element that
can substitute for kml:AbstractTourPrimitiveGroup.
Purpose: Verify that if a kml:TourControl element is not a descendant of kml:Update,
then it contains a child kml:playMode element (or an allowable substitution).
Method: Pass if the assertion is satisfied; fail otherwise. This element may be
used to insert a user-controlled pause.
Purpose: Check that if a kml:SoundCue element is not a descendant of
kml:Update, then it has a kml:href child element that refers to an audio
resource (media type audio/*).
Method: Pass if the assertion is satisfied; fail otherwise. Sounds are
played in parallel with the rest of the tour. Commonly used audio formats
are listed below.
MP3 (audio/mpeg)
M4A (audio/mp4, with AAC encoding)
References:
OGC 12-007r2, 9.29.2
KML Developer's Guide - Touring in KML - Adding
sound
Purpose: Check that the value of the kml:AnimatedUpdate/kml:Update/kml:targetHref
element satisfies one of the following cases:
it is an absolute URI that refers to a KML or KMZ resource;
it is empty (the target elements are in the same document).
Method: Pass if the assertion is satisfied; fail otherwise. Changes to
KML features will be reverted when the tour is over, and will not be saved
at any time.
Purpose: Verify that the coordinates specifying the track positions (kml:coord)
consist of space-delimited numeric values in the applicable coordinate reference
system (CRS).
Method: Pass if the assertion is satisfied; fail otherwise. A kml:Track element
may be used to describe the time-varying position of a Placemark feature that
represents a moving object. In the default CRS (see Annex B), the coordinate
tuple values are longitude, latitude, and altitude. An empty kml:coord element
is permitted to indicate missing position data; the estimated position may be
determined using some interpolation method.
Purpose: Check that for every temporal value (kml:when) in a kml:Track there
is a position (kml:coord) value. That is, the following XPath expression must be
true: count(kml:when) = count(kml:coord).
Method: Pass if the assertion is satisfied; fail otherwise. A temporal value
may be represented by a period such a day, month, or year; this might be the case
for an object that moves slowly or one whose position is observed infrequently.
Purpose: Verify that each orientation element contained by a track (kml:angles)
satisfies the following constraints:
contains 1 or 3 space-delimited numeric values specifying an angle of
rotation (heading, tilt, roll);
if the track has no associated model, then only one angle (heading)
is specified.
Method: Pass if the assertion is satisfied; fail otherwise. A non-empty value
specifies an additional heading, tilt, and roll value for the corresponding track
position.
Purpose: Verify that the coordinates of a LatLonQuad element contained by
a GroundOverlay feature satisfies the following constraints:
it contains exactly four coordinate tuples;
the coordinates are specified in counter-clockwise order with the first
coordinate corresponding to the lower-left corner of the overlayed image;
the quadrilateral is convex (every internal angle <= 180 degrees).
Method: Pass if all constraints are satisfied; fail otherwise. If present, the
third value in a coordinate tuple is ignored (altitude is set using the kml:altitude
element).
Purpose: Check that a kml:Location element satisfies all of the following
constraints:
it contains the kml:longitude and kml:latitude elements;
if the parent kml:Model element has a kml:altitudeMode value that is
not "clampToGround", then the kml:altitude element must
also be present.
Method: Pass if all applicable assertions are satisfied; fail otherwise.
References:
OGC 12-007r2, 9.20.2
OGC 12-007r2, 10.9.2
OGC 12-007r2, 10.10.2
Test type: Capability
Conformance Level 2
Purpose
Includes all tests in Level 1, plus test cases covering requirements that should
be satisfied by a KML document. Non-conformance at this level may hinder the utility,
portability, or interoperability of the document.
Purpose: Check that if a kml:PolyStyle element is not a descendant of kml:Update,
it contains at least one of the following elements: kml:color, kml:colorMode, kml:fill,
or kml:outline.
Method: Pass if the assertion is satisfied; fail otherwise.
Purpose: Confirm that a kml:coordinates or kml:Location element includes a
third value (elevation) in every coordinate tuple if its sibling kml:altitudeMode
element does NOT have the value "clampToGround".
Method: Pass if the assertion is satisfied; fail otherwise. Applies to the
control points in kml:AbstractGeometryType/kml:coordinates and
kml:Model/kml:Location.
Purpose: Verify that if a kml:Scale element is not a descendant of kml:Update,
it contains at least one of the following elements: kml:x, kml:y, or kml:z.
Method: Pass if the assertion is satisfied; fail otherwise.
Purpose: Verify that the root element (kml:kml) contains at least one child element:
kml:NetworkLinkControl or any element that substitutes for kml:AbstractFeatureType.
Method: Pass if the assertion is satisfied; fail otherwise.
Purpose: Verify that a kml:viewFormat contains at least one view parameter.
Method: Pass if the assertion is satisfied; fail otherwise. The query string
is expected to contain one or more name-value pairs encoded as specified for
application/x-www-form-urlencoded entities.
Purpose: Verify a kml:httpQuery contains at least one query parameter.
Method: Pass if the httpQuery has at least one of the allowable parameters; fail
otherwise. The query string is expected to contain one or more name-value pairs
encoded as specified for application/x-www-form-urlencoded entities.
Purpose: Verify that a kml:LinearRing element that constitutes the boundary of a
polygon does not contain any of the following elements: kml:extrude, kml:tesselate,
or kml:altitudeMode.
Method: Pass if the assertion is satisfied; fail otherwise.
Purpose: Check that a kml:Data element (that contains an untyped name-value pair)
has both a 'name' attribute and a kml:value child element. Furthermore, the value of
the name attribute shall be unique within the context of its parent kml:ExtendedData
element.
Method: Pass if the assertion is satisfied; fail otherwise. This is the simplest
means of adding custom data to a KML feature.
Purpose: Check that if a kml:PhotoOverlay element includes a kml:Icon/kml:href element
containing [x], [y], and [level] parameters, then it
also includes a child kml:ImagePyramid element; the converse must also be true.
Method: Pass if the assertions are satisfied; fail otherwise. Check for the
kml:ImagePyramid element when the x, y, and level parameters are present; if the
kml:ImagePyramid element occurs then check for the presence of the x, y, and level
parameters. The tile parameters are embedded within the URL (which need not be
constructed exactly as shown in the following example).
EXAMPLE
http://server.example.org/bigphoto/$[level]/row_$[x]_column_$[y].jpg
Purpose: Verify that if a kml:GroundOverlay element is not a descendant of kml:Update,
then its geographic extent is specified by either a kml:LatLonBox or a kml:LatLonQuad element.
Method: Pass if the assertion is satisfied; fail otherwise. See ATC-111.
Purpose: Check that a kml:Camera element satisfies all of the following constraints:
if it is not a descendant of kml:Update, then the following child elements
are present: kml:latitude, kml:longitude, and kml:altitude;
the value of kml:altitudeMode is not "clampToGround".
Method: Pass if the assertions are satisfied; fail otherwise. A camera view is
defined in terms of its position and orientation; it is not confined to the Earth's
surface.
Purpose: Check that if any element that substitutes for kml:AbstractOverlayGroup
is not a descendant of kml:Update, then it contains a kml:Icon child element (that
refers to an image).
Method: Pass if the assertion is satisfied; fail otherwise. This test applies
to the following elements: kml:GroundOverlay, kml:PhotoOverlay, and kml:ScreenOverlay.
Purpose: Check that if a kml:LabelStyle element is not a descendant of kml:Update,
it has at least one of the following child elements: kml:color, kml:colorMode, or
kml:scale.
Method: Pass if the assertion is satisfied; fail otherwise.
Purpose: Check that if a kml:ListStyle element is not a descendant of kml:Update,
it has at least one of the following child elements: kml:listItemType, kml:bgColor,
or kml:ItemIcon.
Method: Pass if the assertion is satisfied; fail otherwise.
Purpose: Check that if a kml:Style element is not a descendant of kml:Update,
it is not empty.
Method: Pass if the assertion is satisfied; fail otherwise. A style group
can be collected in a kml:Document container and shared by multiple features.
Purpose: Check that if a kml:Placemark element is not a descendant of kml:Update, it
includes a geometry element (any element that substitutes for kml:AbstractGeometryGroup).
Method: Pass if the assertion is satisfied; fail otherwise.
Purpose: Check that if a kml:StyleMap element is not a descendant of kml:Update,
it contains two kml:Pair elements where one has the key value "normal" and the
other has the key value "highlight".
Method: Pass if the assertion is satisfied; fail otherwise. This element is
used to provide alternative styles for Placemark features; each style is identified
by a 'key' value corresponding to a display mode.
Purpose: Verify that a kml:FlyTo element satisfies all of the following constraints:
it has a specified flight duration (in seconds) >= 0;
it specifies a method of flight (flyToMode).
Method: Pass if all assertions are satisfied; fail otherwise. The flyToMode
element informs an earth browser about how to approach the viewing position; the default
value is "bounce" (begin and end at rest).
Purpose: Check that a kml:Wait element specifies a duration (in seconds) > 0.
Method: Pass if the assertion is satisfied; fail otherwise. This tour primitive
pauses the view, but not the tour timeline–sound files and animated updates
should continue to play.
Purpose: Verify that the kml:AnimatedUpdate/kml:duration element specifies
a duration (in seconds) > 0.
Method: Pass if the assertion is satisfied; fail otherwise. Any changes that
can be interpolated (e.g. properties with numeric or geometry values) are animated
over the specified duration; otherwise the changes are applied at the end of the
specified duration.
Purpose: Verify that replacement text values exist for any entity references appearing
in a kml:BalloonStyle/kml:text element. The references are constructed as follows:
$[name]: refers to either an element or an attribute of the containing feature,
or to one of its extended data elements (//kml:Data/@name).
$[name/displayName]: refers to the kml:displayName element in an extended
data element (//kml:Data/@name) belonging to the feature.
$[schemaName/fieldName]: refers to a descendant kml:SimpleData element that
is defined by a kml:SimpleField element matching this XPath expression:
kml:Schema[@name=$schemaName]/kml:SimpleField[@name=$fieldName].
$[schemaName/fieldName/displayName]: refers to the kml:displayName element
in a kml:Schema element matching this XPath expression:
kml:Schema[@name=$schemaName]/kml:SimpleField[@name=$fieldName]/displayName.
Method: Pass if all entity references can be dereferenced; fail otherwise. The source
of values for the replacement text includes the ancestor feature being styled and any
kml:Schema elements that are associated with it.
Purpose: Check that the value of the atom:link/@rel attribute is "related".
Method: Pass if the assertion is satisfied; fail otherwise. If the attribute
is not present, the link must be interpreted as if @rel = "alternate" (i.e. the
referent is an alternate version of the resource). The value "related" simply
denotes a generic relationship. The atom:link element applies to all child features
in a container unless overridden.
Purpose: Confirm that a uom attribute identifies a valid unit of
measurement. The attribute value must be a URI reference that satisfies one of the
following conditions:
it is an absolute URI that refers to a resource that
defines the unit of measurement;
it is a relative URI that specifies a (case-sensitive)
unit symbol from the Unified Code for Units of Measure. A standard
SI prefix symbol may be used to specify a decimal (sub)multiple (see Table 1
in the UCUM).
Method: Pass if the applicable assertion is satisfied; fail otherwise.
The attribute may appear on any of the following elements: kml:SimpleField,
kml:Data, and kml:SimpleArrayField. Some common unit identifiers are listed
below.
Includes all tests in Level 2 and introduces additional constraints that are
essentially informative in nature; they are intended to signal the use of deprecated
elements or to encourage alignment with existing (non-normative) geomatics standards
or conventions.
Purpose: Confirm that the rings comprising the boundary of a kml:Polygon geometry
satisfy the constraints listed below.
no two rings cross (but they may intersect at a single point);
the (exterior) coordinates are specified in a counterclockwise order.
Method: Pass if all assertions are satisfied; fail otherwise. The surface
of a polygon is oriented such that the interior is to the left of a boundary
curve. This means that the exterior boundary of the surface runs counterclockwise
when viewed from the side of the surface indicated by the upward normal (the
"top" of the surface); interior boundaries are clockwise.
Purpose: Check that a kml:LinearRing is closed and simple; that is, it
forms a cycle (first and last coordinates are identical) and it does not
cross itself.
Method: Pass if the assertion is satisfied; fail otherwise.