public async Task AddDataset()
        {
            try
            {
                _context.Database.EnsureCreated();

                var repository = new DatasetRepository(_context);
                await repository.AddDatasetAsync("dataset name", new List <string>() { "1 0", "1 2" });

                Assert.Equal(1, _context.Datasets.Count());
                Assert.Equal(2, _context.Datasets.Select(c => c.Friendships).Single().Count());
                Assert.Equal("dataset name", _context.Datasets.Single().Name);
                var data = new Tuple <string, string>[] {
                    new Tuple <string, string>("1", "0"),
                    new Tuple <string, string>("1", "2")
                };
                Assert.Equal(
                    data,
                    _context
                    .Datasets
                    .Select(c => c.Friendships)
                    .Single()
                    .Select(c => new Tuple <string, string>(c.UserOne, c.UserTwo))
                    .ToArray()
                    );
            }
            finally
            {
                _context.Database.EnsureDeleted();
            }
        }
        public async Task GetDatasets()
        {
            try
            {
                _context.Database.EnsureCreated();

                var repository = new DatasetRepository(_context);
                await repository.AddDatasetAsync("dataset 1", new List <string>() { "1 0", "1 2" });

                await repository.AddDatasetAsync("dataset 2", new List <string>() { "3 1", "1 2" });

                var datasets = await repository.GetDatasetsAsync();

                Assert.Equal(2, datasets.Count());
            }
            finally
            {
                _context.Database.EnsureDeleted();
            }
        }
        public async Task GetUsersCountAsync()
        {
            try
            {
                _context.Database.EnsureCreated();

                var repository = new DatasetRepository(_context);
                await repository.AddDatasetAsync("dataset 1", new List <string>() { "1 0", "1 2" });

                var datasets = await repository.GetDatasetsAsync();

                var usersCount = await repository.GetUsersCountAsync(datasets.Single().Id);

                Assert.Equal(3, usersCount);
            }
            finally
            {
                _context.Database.EnsureDeleted();
            }
        }
        public async Task GetFriendsCountPerUser()
        {
            try
            {
                _context.Database.EnsureCreated();

                var repository = new DatasetRepository(_context);
                await repository.AddDatasetAsync("dataset 1", new List <string>() { "1 0", "1 2" });

                var datasets = await repository.GetDatasetsAsync();

                var friendsCountPerUser = await repository.GetFriendsCountPerUserAsync(datasets.Single().Id);

                Assert.Equal(3, friendsCountPerUser.Count());
                Assert.Equal(2, friendsCountPerUser["1"]);
                Assert.Equal(1, friendsCountPerUser["0"]);
                Assert.Equal(1, friendsCountPerUser["2"]);
            }
            finally
            {
                _context.Database.EnsureDeleted();
            }
        }