CharSegment bug

CSharp · Console

/Program.cs

using System;
using System.Collections.Generic;
using Platform.Collections.Segments;
using Platform.Collections.Segments.Walkers;



var text = "aaaaaaaaaa";
var walker = new Walker4();
walker.WalkAll(text);
foreach (var l in walker.PublicDictionary)
{
    foreach (var r in walker.PublicDictionary)
    {
		// ignore if guaranteed not equal
		if (l.Key.Length != r.Key.Length) continue;
		
		/// Lool use Func<...>
		{
			var key = l.Key;
			var offset = key.Offset;
			var length = key.Length;
			Console.Write($"{key}[{offset}..{length + offset}] == ");
		}
		
		{
			var key = r.Key;
			var offset = key.Offset;
			var length = key.Length;
			Console.Write($"{key}[{offset}..{length + offset}]");
		}
		
        Console.WriteLine($"==> {l.Key.Equals(r.Key)}");
    }
}





public class Walker4 : DictionaryBasedDuplicateSegmentsWalkerBase<char, CharSegment>
    {
        public IDictionary<CharSegment, long> PublicDictionary
        {
            get
            {
                return Dictionary;
            }
        }

        public Walker4()
            : base(DefaultMinimumStringSegmentLength, resetDictionaryOnEachWalk: true)
        {
        }

        private int _totalDuplicates;

        public override void WalkAll(IList<char> elements)
        {
            _totalDuplicates = 0;

            base.WalkAll(elements);
            Console.WriteLine($"Unique string segments: {Dictionary.Count}. Total duplicates: {_totalDuplicates}.");
        }

        protected override CharSegment CreateSegment(IList<char> elements, int offset, int length) => new CharSegment(elements, offset, length);

        protected override void OnDublicateFound(CharSegment segment)
        {
            _totalDuplicates++; 
        }
    }
;