Example #1
0
        public void Test()
        {
            var result = new ThreeSum_15().ThreeSum(new[] { -1, 0, 1, 2, -1, -4 });

            Assert.Equal(2, result.Count);
            Assert.True(result[0].ContainsSameElement(new[] { -1, -1, 2 }));
            Assert.True(result[1].ContainsSameElement(new[] { -1, 0, 1 }));
        }
Example #2
0
        public async Task ThreeSum_Perf_Tests(string nums, int maxMilliseconds)
        {
            var n = nums.Split(",").Select(int.Parse).ToArray();

            IList <IList <int> > actual = null;
            var sw         = new Stopwatch();
            var actualTask = Task.Run(() =>
            {
                sw.Start();
                actual = ThreeSum_15.ThreeSum(n);
                sw.Stop();
            });
            var delayTask     = Task.Delay(maxMilliseconds * 100, new CancellationToken());
            var completedTask = await Task.WhenAny(actualTask, delayTask);

            // Assert.False(true, $"ms: '{sw.ElapsedMilliseconds}'");
            Assert.True(completedTask.Id == actualTask.Id,
                        $"Elapsed time (ms): '{sw.ElapsedMilliseconds}'");
            Assert.NotNull(actual);
        }
Example #3
0
        public void ThreeSum_Tests(string nums, string expected)
        {
            var n = nums.Split(",").Select(int.Parse).ToArray();
            List <List <int> > exp;

            if (string.IsNullOrWhiteSpace(expected))
            {
                exp = new List <List <int> >();
            }
            else
            {
                exp = expected.Split(";")
                      .Select(s => s.Split(",")
                              .Select(int.Parse)
                              .ToList())
                      .ToList();
            }

            var actual = ThreeSum_15.ThreeSum(n);

            Assert.NotNull(actual);
            if (exp.Count != 0)
            {
                Assert.NotEmpty(actual);
            }
            else
            {
                Assert.Empty(actual);
                return;
            }

            Assert.Equal(exp.Count, actual.Count);

            var actualOrdered = actual.Select(t => t.OrderBy(li => li).ToList()).OrderBy(l => $"{l[0]}{l[1]}{l[2]}").ToList();
            var expOrdered    = exp.Select(t => t.OrderBy(li => li).ToList()).OrderBy(l => $"{l[0]}{l[1]}{l[2]}").ToList();

            for (var i = 0; i < exp.Count; ++i)
            {
                Assert.True(expOrdered[i].SequenceEqual(actualOrdered[i]));
            }
        }