public virtual void TestPolylinePolylineRelate()
		{
			com.esri.core.geometry.OperatorRelate op = com.esri.core.geometry.OperatorRelate.Local();
			com.esri.core.geometry.SpatialReference sr = com.esri.core.geometry.SpatialReference.Create(4326);
			bool res;
			string scl;
			com.esri.core.geometry.Polyline polyline1 = new com.esri.core.geometry.Polyline();
			com.esri.core.geometry.Polyline polyline2 = new com.esri.core.geometry.Polyline();
			polyline1.StartPath(0, 0);
			polyline1.LineTo(1, 1);
			polyline2.StartPath(1, 1);
			polyline2.LineTo(2, 0);
			scl = "FF1FT01T2";
			res = op.Execute(polyline1, polyline2, sr, scl, null);
			NUnit.Framework.Assert.IsTrue(res);
			scl = "****TF*T*";
			res = op.Execute(polyline1, polyline2, sr, scl, null);
			NUnit.Framework.Assert.IsTrue(!res);
			scl = "****F****";
			res = op.Execute(polyline1, polyline2, sr, scl, null);
			NUnit.Framework.Assert.IsTrue(!res);
			scl = "**1*0*T**";
			res = op.Execute(polyline1, polyline2, sr, scl, null);
			NUnit.Framework.Assert.IsTrue(res);
			scl = "****1****";
			res = op.Execute(polyline1, polyline2, sr, scl, null);
			NUnit.Framework.Assert.IsTrue(!res);
			scl = "**T*001*T";
			res = op.Execute(polyline1, polyline2, sr, scl, null);
			NUnit.Framework.Assert.IsTrue(res);
			scl = "T********";
			res = op.Execute(polyline1, polyline2, sr, scl, null);
			NUnit.Framework.Assert.IsTrue(!res);
			scl = "F********";
			res = op.Execute(polyline1, polyline2, sr, scl, null);
			NUnit.Framework.Assert.IsTrue(res);
			polyline1.SetEmpty();
			polyline2.SetEmpty();
			polyline1.StartPath(0, 0);
			polyline1.LineTo(1, 0);
			polyline2.StartPath(0, 0);
			polyline2.LineTo(1, 0);
			scl = "1FFFTFFFT";
			res = op.Execute(polyline1, polyline2, sr, scl, null);
			NUnit.Framework.Assert.IsTrue(res);
			scl = "1*T*T****";
			res = op.Execute(polyline1, polyline2, sr, scl, null);
			NUnit.Framework.Assert.IsTrue(!res);
			scl = "1T**T****";
			res = op.Execute(polyline1, polyline2, sr, scl, null);
			NUnit.Framework.Assert.IsTrue(!res);
			polyline1.SetEmpty();
			polyline2.SetEmpty();
			polyline1.StartPath(0, 0);
			polyline1.LineTo(0.5, 0.5);
			polyline1.LineTo(1, 1);
			polyline2.StartPath(1, 0);
			polyline2.LineTo(0.5, 0.5);
			polyline2.LineTo(0, 1);
			scl = "0F1FFTT0T";
			res = op.Execute(polyline1, polyline2, sr, scl, null);
			NUnit.Framework.Assert.IsTrue(res);
			scl = "*T*******";
			res = op.Execute(polyline1, polyline2, sr, scl, null);
			NUnit.Framework.Assert.IsTrue(!res);
			scl = "*F*F*****";
			res = op.Execute(polyline1, polyline2, sr, scl, null);
			NUnit.Framework.Assert.IsTrue(res);
			polyline1.SetEmpty();
			polyline2.SetEmpty();
			polyline1.StartPath(0, 0);
			polyline1.LineTo(1, 0);
			polyline2.StartPath(1, -1);
			polyline2.LineTo(1, 1);
			scl = "FT1TF01TT";
			res = op.Execute(polyline1, polyline2, sr, scl, null);
			NUnit.Framework.Assert.IsTrue(!res);
			scl = "***T*****";
			res = op.Execute(polyline1, polyline2, sr, scl, null);
			NUnit.Framework.Assert.IsTrue(res);
			polyline1.SetEmpty();
			polyline2.SetEmpty();
			polyline1.StartPath(0, 0);
			polyline1.LineTo(0, 20);
			polyline1.LineTo(20, 20);
			polyline1.LineTo(20, 0);
			polyline1.LineTo(0, 0);
			// has no boundary
			polyline2.StartPath(3, 3);
			polyline2.LineTo(5, 5);
			op.AccelerateGeometry(polyline1, sr, com.esri.core.geometry.Geometry.GeometryAccelerationDegree.enumHot);
			scl = "FF1FFF102";
			res = op.Execute(polyline1, polyline2, sr, scl, null);
			NUnit.Framework.Assert.IsTrue(res);
			polyline1.SetEmpty();
			polyline2.SetEmpty();
			polyline1.StartPath(4, 0);
			polyline1.LineTo(0, 4);
			polyline1.LineTo(4, 8);
			polyline1.LineTo(8, 4);
			polyline2.StartPath(8, 1);
			polyline2.LineTo(8, 2);
			op.AccelerateGeometry(polyline1, sr, com.esri.core.geometry.Geometry.GeometryAccelerationDegree.enumHot);
			scl = "FF1FF0102";
			res = op.Execute(polyline1, polyline2, sr, scl, null);
			NUnit.Framework.Assert.IsTrue(res);
			polyline1.SetEmpty();
			polyline2.SetEmpty();
			polyline1.StartPath(4, 0);
			polyline1.LineTo(0, 4);
			polyline2.StartPath(3, 2);
			polyline2.LineTo(3, 2);
			NUnit.Framework.Assert.IsTrue(polyline2.GetBoundary().IsEmpty());
			scl = "******0F*";
			res = op.Execute(polyline1, polyline2, sr, scl, null);
			NUnit.Framework.Assert.IsTrue(res);
			polyline2.LineTo(3, 2);
			NUnit.Framework.Assert.IsTrue(polyline2.GetBoundary().IsEmpty());
			scl = "******0F*";
			res = op.Execute(polyline1, polyline2, sr, scl, null);
			NUnit.Framework.Assert.IsTrue(res);
			scl = "******0F*";
			polyline2.LineTo(3, 2);
			NUnit.Framework.Assert.IsTrue(polyline2.GetBoundary().IsEmpty());
			res = op.Execute(polyline1, polyline2, sr, scl, null);
			NUnit.Framework.Assert.IsTrue(res);
			polyline1.SetEmpty();
			polyline2.SetEmpty();
			polyline1.StartPath(3, 3);
			polyline1.LineTo(3, 4);
			polyline1.LineTo(3, 3);
			polyline2.StartPath(1, 1);
			polyline2.LineTo(1, 1);
			scl = "FF1FFF0F2";
			res = op.Execute(polyline1, polyline2, sr, scl, null);
			NUnit.Framework.Assert.IsTrue(res);
			scl = "FF0FFF1F2";
			res = op.Execute(polyline2, polyline1, sr, scl, null);
			NUnit.Framework.Assert.IsTrue(res);
			polyline1.SetEmpty();
			polyline2.SetEmpty();
			polyline1.StartPath(4, 0);
			polyline1.LineTo(0, 4);
			polyline2.StartPath(2, 2);
			polyline2.LineTo(2, 2);
			scl = "0F*******";
			res = op.Execute(polyline1, polyline2, sr, scl, null);
			NUnit.Framework.Assert.IsTrue(res);
			polyline2.LineTo(2, 2);
			scl = "0F*******";
			res = op.Execute(polyline1, polyline2, sr, scl, null);
			NUnit.Framework.Assert.IsTrue(res);
			scl = "0F*******";
			res = op.Execute(polyline1, polyline2, sr, scl, null);
			NUnit.Framework.Assert.IsTrue(res);
		}