public void RetornarApuracao_VariosGrupos_RetornaApuracao() { var ciclo = Factories.CriarCicloValido(); var periodo = new Periodo(new DateTime(2020, 1, 1), new DateTime(2020, 1, 2)); var votacao = new VotacaoFake(periodo, ciclo, new Dimensionamento(2, 1)); votacao.IniciarVotacao(); var grupo1 = new Grupo("Grupo 1"); ciclo.AdicionarGrupo(grupo1); // Aplausogramas: 3, 6, 9, 12 for (var i = 1; i <= 4; i++) { var usuario = new Usuario($"1231231231{i}", new string(i.ToString()[0], 4), $"Usuário {i}", $"Cargo {i}", $"Área {i}", ciclo.Empresa); var associado = new Associado(usuario, grupo1, i, "1234"); ciclo.AdicionarAssociado(associado); votacao.AdicionarElegivel(associado); } var grupo2 = new Grupo("Grupo 2"); ciclo.AdicionarGrupo(grupo2); for (var i = 1; i <= 3; i++) { var usuario = new Usuario($"2231231231{i}", new string(i.ToString()[0], 4), $"Usuário {i}", $"Cargo {i}", $"Área {i}", ciclo.Empresa); var associado = new Associado(usuario, grupo2, 2, "1234"); ciclo.AdicionarAssociado(associado); votacao.AdicionarElegivel(associado); } // Grupo 1 // Pontuação: 7, 7, 9, 12 votacao.Elegiveis.ElementAt(0).RegistrarVoto(); votacao.Elegiveis.ElementAt(0).RegistrarVoto(); votacao.Elegiveis.ElementAt(0).RegistrarVoto(); votacao.Elegiveis.ElementAt(0).RegistrarVoto(); votacao.Elegiveis.ElementAt(1).RegistrarVoto(); // Grupo 2 // Pontuação: 8, 6, 9 votacao.Elegiveis.ElementAt(4).RegistrarVoto(); votacao.Elegiveis.ElementAt(4).RegistrarVoto(); votacao.Elegiveis.ElementAt(6).RegistrarVoto(); votacao.Elegiveis.ElementAt(6).RegistrarVoto(); votacao.Elegiveis.ElementAt(6).RegistrarVoto(); votacao.FinalizarVotacao(); Assert.Collection(votacao.RetornarApuracao(), grupo => { Assert.Equal(grupo1, grupo.Key); Assert.Collection(grupo.Value, elegivel => { Assert.Equal(votacao.Elegiveis.ElementAt(3), elegivel); Assert.Equal(12, elegivel.Pontuacao); }, elegivel => { Assert.Equal(votacao.Elegiveis.ElementAt(2), elegivel); Assert.Equal(9, elegivel.Pontuacao); }, elegivel => { Assert.Equal(votacao.Elegiveis.ElementAt(1), elegivel); Assert.Equal(7, elegivel.Pontuacao); }, elegivel => { Assert.Equal(votacao.Elegiveis.ElementAt(0), elegivel); Assert.Equal(7, elegivel.Pontuacao); }); }, grupo => { Assert.Equal(grupo2, grupo.Key); Assert.Collection(grupo.Value, elegivel => { Assert.Equal(votacao.Elegiveis.ElementAt(6), elegivel); Assert.Equal(9, elegivel.Pontuacao); }, elegivel => { Assert.Equal(votacao.Elegiveis.ElementAt(4), elegivel); Assert.Equal(8, elegivel.Pontuacao); }, elegivel => { Assert.Equal(votacao.Elegiveis.ElementAt(5), elegivel); Assert.Equal(6, elegivel.Pontuacao); }); }); }