GetInstance() public static method

Returns a CharacterUtils implementation according to the given Version instance.
public static GetInstance ( Lucene.Net.Util.Version matchVersion ) : CharacterUtils
matchVersion Lucene.Net.Util.Version /// a version instance
return CharacterUtils
示例#1
0
        public virtual void TestCodePointAtCharSequenceInt()
        {
#pragma warning disable 612, 618
            var java4 = CharacterUtils.GetInstance(LuceneVersion.LUCENE_30);
#pragma warning restore 612, 618
            var cpAt3            = "Abc\ud801\udc1c";
            var highSurrogateAt3 = "Abc\ud801";
            assertEquals((int)'A', java4.CodePointAt(cpAt3, 0));
            assertEquals((int)'\ud801', java4.CodePointAt(cpAt3, 3));
            assertEquals((int)'\ud801', java4.CodePointAt(highSurrogateAt3, 3));
            try
            {
                java4.CodePointAt(highSurrogateAt3, 4);
                fail("string index out of bounds");
            }
            catch (Exception e) when(e.IsIndexOutOfBoundsException())
            {
            }

            var java5 = CharacterUtils.GetInstance(TEST_VERSION_CURRENT);
            assertEquals((int)'A', java5.CodePointAt(cpAt3, 0));
            assertEquals(Character.ToCodePoint('\ud801', '\udc1c'), java5.CodePointAt(cpAt3, 3));
            assertEquals((int)'\ud801', java5.CodePointAt(highSurrogateAt3, 3));
            try
            {
                java5.CodePointAt(highSurrogateAt3, 4);
                fail("string index out of bounds");
            }
            catch (Exception e) when(e.IsIndexOutOfBoundsException())
            {
            }
        }
示例#2
0
        public virtual void TestCodePointAtCharSequenceInt()
        {
            var java4            = CharacterUtils.GetInstance(LuceneVersion.LUCENE_30);
            var cpAt3            = "Abc\ud801\udc1c";
            var highSurrogateAt3 = "Abc\ud801";

            assertEquals((int)'A', java4.CodePointAt(cpAt3, 0));
            assertEquals((int)'\ud801', java4.CodePointAt(cpAt3, 3));
            assertEquals((int)'\ud801', java4.CodePointAt(highSurrogateAt3, 3));
            try
            {
                java4.CodePointAt(highSurrogateAt3, 4);
                fail("string index out of bounds");
            }
            catch (IndexOutOfRangeException)
            {
            }

            var java5 = CharacterUtils.GetInstance(TEST_VERSION_CURRENT);

            assertEquals((int)'A', java5.CodePointAt(cpAt3, 0));
            assertEquals(Character.CodePointAt('\ud801', '\udc1c'), java5.CodePointAt(cpAt3, 3));
            assertEquals((int)'\ud801', java5.CodePointAt(highSurrogateAt3, 3));
            try
            {
                java5.CodePointAt(highSurrogateAt3, 4);
                fail("string index out of bounds");
            }
            catch (System.IndexOutOfRangeException)
            {
            }
        }
示例#3
0
        /// <summary>
        /// Creates a new <seealso cref="CharTokenizer"/> instance
        /// </summary>
        /// <param name="matchVersion">
        ///          Lucene version to match </param>
        /// <param name="input">
        ///          the input to split up into tokens </param>
        protected CharTokenizer(LuceneVersion matchVersion, TextReader input)
            : base(input)
        {
            termAtt   = AddAttribute <ICharTermAttribute>();
            offsetAtt = AddAttribute <IOffsetAttribute>();

            charUtils = CharacterUtils.GetInstance(matchVersion);
        }
示例#4
0
        public virtual void TestConversions()
        {
            var java4 = CharacterUtils.GetJava4Instance(TEST_VERSION_CURRENT);
            var java5 = CharacterUtils.GetInstance(TEST_VERSION_CURRENT);

            TestConversions(java4);
            TestConversions(java5);
        }
示例#5
0
        public virtual void TestCodePointCount()
        {
            var java4 = CharacterUtils.GetJava4Instance(TEST_VERSION_CURRENT);
            var java5 = CharacterUtils.GetInstance(TEST_VERSION_CURRENT);

            var s = TestUtil.RandomUnicodeString(Random);

            assertEquals(s.Length, java4.CodePointCount(s));
            assertEquals(Character.CodePointCount(s, 0, s.Length), java5.CodePointCount(s));
        }
示例#6
0
        internal V[] values;                          // package private because used in CharArraySet's non Set-conform CharArraySetIterator

        /// <summary>
        /// Create map with enough capacity to hold startSize terms
        /// </summary>
        /// <param name="matchVersion">
        ///          compatibility match version see <a href="#version">Version
        ///          note</a> above for details. </param>
        /// <param name="startSize">
        ///          the initial capacity </param>
        /// <param name="ignoreCase">
        ///          <code>false</code> if and only if the set should be case sensitive
        ///          otherwise <code>true</code>. </param>
        public CharArrayMap(LuceneVersion matchVersion, int startSize, bool ignoreCase)
        {
            this.ignoreCase = ignoreCase;
            int size = INIT_SIZE;

            while (startSize + (startSize >> 2) > size)
            {
                size <<= 1;
            }
            keys              = new char[size][];
            values            = new V[size];
            this.charUtils    = CharacterUtils.GetInstance(matchVersion);
            this.matchVersion = matchVersion;
        }
示例#7
0
        internal V[] values;                    // package private because used in CharArraySet's non Set-conform CharArraySetIterator

        /// <summary>
        /// Create map with enough capacity to hold startSize terms
        /// </summary>
        /// <param name="matchVersion">
        ///          compatibility match version see <a href="#version">Version
        ///          note</a> above for details. </param>
        /// <param name="startSize">
        ///          the initial capacity </param>
        /// <param name="ignoreCase">
        ///          <code>false</code> if and only if the set should be case sensitive
        ///          otherwise <code>true</code>. </param>
        public CharArrayMap(Lucene.Net.Util.LuceneVersion matchVersion, int startSize, bool ignoreCase)
        {
            this.ignoreCase = ignoreCase;
            int size_Renamed = INIT_SIZE;

            while (startSize + (startSize >> 2) > size_Renamed)
            {
                size_Renamed <<= 1;
            }
            keys              = new char[size_Renamed][];
            values            = (V[])new object[size_Renamed];
            this.charUtils    = CharacterUtils.GetInstance(matchVersion);
            this.matchVersion = matchVersion;
        }
示例#8
0
        public virtual void TestCodePointAtCharArrayIntInt()
        {
#pragma warning disable 612, 618
            var java4 = CharacterUtils.GetInstance(LuceneVersion.LUCENE_30);
#pragma warning restore 612, 618
            var cpAt3            = "Abc\ud801\udc1c".ToCharArray();
            var highSurrogateAt3 = "Abc\ud801".ToCharArray();
            assertEquals((int)'A', java4.CodePointAt(cpAt3, 0, 2));
            assertEquals((int)'\ud801', java4.CodePointAt(cpAt3, 3, 5));
            assertEquals((int)'\ud801', java4.CodePointAt(highSurrogateAt3, 3, 4));

            var java5 = CharacterUtils.GetInstance(TEST_VERSION_CURRENT);
            assertEquals((int)'A', java5.CodePointAt(cpAt3, 0, 2));
            assertEquals(Character.ToCodePoint('\ud801', '\udc1c'), java5.CodePointAt(cpAt3, 3, 5));
            assertEquals((int)'\ud801', java5.CodePointAt(highSurrogateAt3, 3, 4));
        }
示例#9
0
        public virtual void TestOffsetByCodePoint()
        {
            var java4 = CharacterUtils.GetJava4Instance(TEST_VERSION_CURRENT);
            var java5 = CharacterUtils.GetInstance(TEST_VERSION_CURRENT);

            for (int i = 0; i < 10; ++i)
            {
                var s      = TestUtil.RandomUnicodeString(Random).toCharArray();
                var index  = TestUtil.NextInt32(Random, 0, s.Length);
                var offset = Random.Next(7) - 3;
                try
                {
                    var to = java4.OffsetByCodePoints(s, 0, s.Length, index, offset);
                    assertEquals(to, index + offset);
                }
                catch (Exception e) when(e.IsIndexOutOfBoundsException())
                {
                    assertTrue((index + offset) < 0 || (index + offset) > s.Length);
                }

                int o;
                try
                {
                    o = java5.OffsetByCodePoints(s, 0, s.Length, index, offset);
                }
                catch (Exception e) when(e.IsIndexOutOfBoundsException())
                {
                    try
                    {
                        Character.OffsetByCodePoints(s, 0, s.Length, index, offset);
                        fail();
                    }
                    catch (Exception e2) when(e2.IsIndexOutOfBoundsException())
                    {
                        // OK
                    }
                    o = -1;
                }
                if (o >= 0)
                {
                    assertEquals(Character.OffsetByCodePoints(s, 0, s.Length, index, offset), o);
                }
            }
        }
示例#10
0
        public virtual void TestFillJava14()
        {
            var input    = "1234\ud801\udc1c789123\ud801\ud801\udc1c\ud801";
            var instance = CharacterUtils.GetInstance(LuceneVersion.LUCENE_30);
            var reader   = new StringReader(input);
            var buffer   = CharacterUtils.NewCharacterBuffer(5);

            assertTrue(instance.Fill(buffer, reader));
            assertEquals(5, buffer.Length);
            assertEquals("1234\ud801", new string(buffer.Buffer, buffer.Offset, buffer.Length));
            assertTrue(instance.Fill(buffer, reader));
            assertEquals(5, buffer.Length);
            assertEquals("\udc1c7891", new string(buffer.Buffer));
            buffer = CharacterUtils.NewCharacterBuffer(6);
            assertTrue(instance.Fill(buffer, reader));
            assertEquals(6, buffer.Length);
            assertEquals("23\ud801\ud801\udc1c\ud801", new string(buffer.Buffer, buffer.Offset, buffer.Length));
            assertFalse(instance.Fill(buffer, reader));
        }
示例#11
0
        public virtual void TestFillNoHighSurrogate()
        {
            var versions = new LuceneVersion[] { LuceneVersion.LUCENE_30, TEST_VERSION_CURRENT };

            foreach (var version in versions)
            {
                var instance = CharacterUtils.GetInstance(version);
                var reader   = new StringReader("helloworld");
                var buffer   = CharacterUtils.NewCharacterBuffer(6);
                assertTrue(instance.Fill(buffer, reader));
                assertEquals(0, buffer.Offset);
                assertEquals(6, buffer.Length);
                assertEquals("hellow", new string(buffer.Buffer));
                assertFalse(instance.Fill(buffer, reader));
                assertEquals(4, buffer.Length);
                assertEquals(0, buffer.Offset);

                assertEquals("orld", new string(buffer.Buffer, buffer.Offset, buffer.Length));
                assertFalse(instance.Fill(buffer, reader));
            }
        }
示例#12
0
        public virtual void TestFillJava15()
        {
            const string input    = "1234\ud801\udc1c789123\ud801\ud801\udc1c\ud801";
            var          instance = CharacterUtils.GetInstance(TEST_VERSION_CURRENT);
            var          reader   = new StringReader(input);
            var          buffer   = CharacterUtils.NewCharacterBuffer(5);

            assertTrue(instance.Fill(buffer, reader));
            assertEquals(4, buffer.Length);
            assertEquals("1234", new string(buffer.Buffer, buffer.Offset, buffer.Length));
            assertTrue(instance.Fill(buffer, reader));
            assertEquals(5, buffer.Length);
            assertEquals("\ud801\udc1c789", new string(buffer.Buffer));
            assertTrue(instance.Fill(buffer, reader));
            assertEquals(4, buffer.Length);
            assertEquals("123\ud801", new string(buffer.Buffer, buffer.Offset, buffer.Length));
            assertFalse(instance.Fill(buffer, reader));
            assertEquals(3, buffer.Length);
            assertEquals("\ud801\udc1c\ud801", new string(buffer.Buffer, buffer.Offset, buffer.Length));
            assertFalse(instance.Fill(buffer, reader));
            assertEquals(0, buffer.Length);
        }
示例#13
0
 /// <summary>
 /// LUCENENET specific - Added in the .NET version to assist with setting the attributes
 /// from multiple constructors.
 /// </summary>
 /// <param name="matchVersion"></param>
 private void Init(LuceneVersion matchVersion)
 {
     charUtils = CharacterUtils.GetInstance(matchVersion);
     termAtt   = AddAttribute <ICharTermAttribute>();
     offsetAtt = AddAttribute <IOffsetAttribute>();
 }
示例#14
0
 /// <summary>
 /// Creates a new <seealso cref="CharTokenizer"/> instance
 /// </summary>
 /// <param name="matchVersion">
 ///          Lucene version to match </param>
 /// <param name="factory">
 ///          the attribute factory to use for this <seealso cref="Tokenizer"/> </param>
 /// <param name="input">
 ///          the input to split up into tokens </param>
 protected CharTokenizer(LuceneVersion matchVersion, AttributeFactory factory, TextReader input)
     : base(factory, input)
 {
     _input    = input;
     charUtils = CharacterUtils.GetInstance(matchVersion);
 }