Пример #1
0
 private static void AssertAllValues(IDictionary <int, object> key, object defaultValue, Reader reader, NumberArray array)
 {
     for (int index = 0; index < INDEXES; index++)
     {
         object value         = reader.read(index % 2 == 0 ? array : array.at(index), index);
         object expectedValue = key.getOrDefault(index, defaultValue);
         if (value is long[])
         {
             assertArrayEquals(( long[] )expectedValue, ( long[] )value, "index " + index);
         }
         else
         {
             assertEquals(expectedValue, value, "index " + index);
         }
     }
 }
Пример #2
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @TestFactory Stream<org.junit.jupiter.api.DynamicTest> shouldGetAndSetRandomItems()
        internal virtual Stream <DynamicTest> ShouldGetAndSetRandomItems()
        {
            ThrowingConsumer <NumberArrayTestData> throwingConsumer = data =>
            {
                using (NumberArray array = data.array)
                {
                    IDictionary <int, object> key = new Dictionary <int, object>();
                    Reader reader       = data.reader;
                    object defaultValue = reader.read(array, 0);

                    // WHEN setting random items
                    for (int i = 0; i < INDEXES * 2; i++)
                    {
                        int    index = _random.Next(INDEXES);
                        object value = data.valueGenerator.apply(_random);
                        data.writer.write(i % 2 == 0 ? array : array.at(index), index, value);
                        key.put(index, value);
                    }

                    // THEN they should be read correctly
                    AssertAllValues(key, defaultValue, reader, array);

                    // AND WHEN swapping some
                    for (int i = 0; i < INDEXES / 2; i++)
                    {
                        int fromIndex = _random.Next(INDEXES);
                        int toIndex;
                        do
                        {
                            toIndex = _random.Next(INDEXES);
                        } while (toIndex == fromIndex);
                        object fromValue = reader.read(array, fromIndex);
                        object toValue   = reader.read(array, toIndex);
                        key.put(fromIndex, toValue);
                        key.put(toIndex, fromValue);
                        array.swap(fromIndex, toIndex);
                    }

                    // THEN they should end up in the correct places
                    AssertAllValues(key, defaultValue, reader, array);
                }
            };

            return(DynamicTest.stream(Arrays().GetEnumerator(), data => data.name, throwingConsumer));
        }