public void TestMatch1 () {
			Sequence seq = new Sequence( AlphabetType.DNA, "taaacc" );
			SeriesAll series = new SeriesAll();
			FeatureList matches;

			series.Add( new Motif( "motif1", AlphabetType.DNA, "aa", 0.5 ) );

			matches = seq.Search( 1, seq.Length, series );
			Assert.AreEqual( 4, matches.Count );
			Assert.AreEqual( "ta", matches[ 0 ].Letters() ); //There might be some error with data structure
			Assert.AreEqual( 1, matches[ 0 ].Start );
			Assert.AreEqual( "aa", matches[ 1 ].Letters() );
			Assert.AreEqual( 2, matches[ 1 ].Start );
			Assert.AreEqual( "aa", matches[ 2 ].Letters() );
			Assert.AreEqual( 3, matches[ 2 ].Start );
			Assert.AreEqual( "ac", matches[ 3 ].Letters() );
			Assert.AreEqual( 4, matches[ 3 ].Start );

			series.Add( new Gap( "gap1", 1, 2, 1 ) );
			series.Add( new Motif( "motif2", AlphabetType.DNA, "cc", 0.5 ) );
			matches = seq.Search( 1, seq.Length, series );
			Assert.AreEqual( 3, matches.Count() );
			Assert.AreEqual( "taaac", matches[ 0 ].Letters() );
			Assert.AreEqual( 0.666, ( (Match) matches[ 0 ] ).Similarity, 1e-3 );
			Assert.AreEqual( "taaacc", matches[ 1 ].Letters() );
			Assert.AreEqual( 0.833, ( (Match) matches[ 1 ] ).Similarity, 1e-3 );
			Assert.AreEqual( "aaacc", matches[ 2 ].Letters() );
			Assert.AreEqual( 1.000, ( (Match) matches[ 2 ] ).Similarity, 1e-3 );
		}
		/** Tests the match method of a series of patterns with a weighted gap */
		public void TestMatchWeightedGap () {
			Sequence seq = new Sequence( AlphabetType.DNA, "taaacc" );
			SeriesAll series = new SeriesAll();

			series.Add( new Motif( "motif1", AlphabetType.DNA, "ta", 1.0 ) );
			series.Add( new Gap( "gap", 1, 2, 1, new double[] { 0, 1 }, 0.0 ) );
			series.Add( new Motif( "motif2", AlphabetType.DNA, "cc", 0.5 ) );
			FeatureList matches = seq.Search( 1, seq.Length, series );
			Assert.AreEqual( "taaac", matches[ 0 ].Letters() );
			Assert.AreEqual( 0.500, ( (Match) matches[ 0 ] ).Similarity, 1e-3 );
			Assert.AreEqual( "taaacc", matches[ 1 ].Letters() );
			Assert.AreEqual( 1.000, ( (Match) matches[ 1 ] ).Similarity, 1e-3 );
		}
		/** Tests the match method of a series of patterns with two gaps */
		public void TestMatchTwoGaps () {
			Sequence seq = new Sequence( AlphabetType.DNA, "taaaagccc" );
			SeriesAll series = new SeriesAll();

			series.Add( new Motif( "motif1", AlphabetType.DNA, "ta", 1.0 ) );
			series.Add( new Gap( "gap1", 1, 2, 1 ) );
			series.Add( new Motif( "motif2", AlphabetType.DNA, "aa", 0.5 ) );
			series.Add( new Gap( "gap2", 1, 2, 1 ) );
			series.Add( new Motif( "motif3", AlphabetType.DNA, "cc", 1.0 ) );
			FeatureList matches = seq.Search( 1, seq.Length, series );
			Assert.AreEqual( 3, matches.Count );
			Assert.AreEqual( "taaaagcc", matches[0].Letters() );
			Assert.AreEqual( 1.0, ( (Match) matches[0] ).Similarity, 1e-1 );
			Assert.AreEqual( "taaaagccc", matches[1].Letters() );
			Assert.AreEqual( 1.0, ( (Match) matches[1] ).Similarity, 1e-1 );
			Assert.AreEqual( "taaaagccc", matches[2].Letters() );
			Assert.AreEqual( 0.9, ( (Match) matches[2] ).Similarity, 1e-1 );
		}
		/** Tests the match method of a series of patterns with two gaps */
		public void TestMatchSigma70 () {
			Sequence seq = new Sequence( AlphabetType.DNA, "cgagagagcg attatatcga ctaaacagaa aatgtcaaac aacttgtcaa aaaacagaag" );
			SeriesAll series = new SeriesAll();

			series.Add( new Motif( "", AlphabetType.DNA, "attata", 1.0 ) );
			series.Add( new Gap( "", 1, 200, 1 ) );
			series.Add( new Motif( "", AlphabetType.DNA, "tgtcaa", 1.0 ) );

			FeatureList matches = seq.Search( 2, seq.Length, series );
			Assert.AreEqual( 2, matches.Count );

			System.Diagnostics.Debug.WriteLine( series.ToXml().ToString() );

			//Assert.AreEqual( "taaaagcc", matches[0].Letters() );
			//Assert.AreEqual( 1.0, ( (Match) matches[0] ).Similarity, 1e-1 );
			//Assert.AreEqual( "taaaagccc", matches[1].Letters() );
			//Assert.AreEqual( 1.0, ( (Match) matches[1] ).Similarity, 1e-1 );
			//Assert.AreEqual( "taaaagccc", matches[2].Letters() );
			//Assert.AreEqual( 0.9, ( (Match) matches[2] ).Similarity, 1e-1 );
		}
		/** Tests the match method of a series of patterns with two gaps */
		public void TestMatchSigma70InChlamydia () {
			SequenceList sequences = null;

			using ( BioPatMBF_Reader reader = new BioPatMBF_Reader() ) {
				sequences = reader.Read(
					Global.GetResourceReader( "data/GenBank/NC_000117-Chlamydia trachomatis D-UW-3CX.gbk" )
				);
			}

			Sequence seq = sequences[0];
			SeriesAll series = new SeriesAll();

			series.Add( new Motif( "", AlphabetType.DNA, "attata", 1.0 ) );
			series.Add( new Gap( "", 1, 200, 1 ) );
			series.Add( new Motif( "", AlphabetType.DNA, "tgtcaa", 1.0 ) );

			FeatureList matches = seq.Search( 2, seq.Length, series );
			Assert.AreEqual( 11, matches.Count );

			//Assert.AreEqual( "taaaagcc", matches[0].Letters() );
			//Assert.AreEqual( 1.0, ( (Match) matches[0] ).Similarity, 1e-1 );
			//Assert.AreEqual( "taaaagccc", matches[1].Letters() );
			//Assert.AreEqual( 1.0, ( (Match) matches[1] ).Similarity, 1e-1 );
			//Assert.AreEqual( "taaaagccc", matches[2].Letters() );
			//Assert.AreEqual( 0.9, ( (Match) matches[2] ).Similarity, 1e-1 );
		}