From 7e3f78a7ffebaeef86093ca0a23b57bbf8138bab Mon Sep 17 00:00:00 2001 From: Tim Vaillancourt Date: Thu, 19 Jul 2018 14:58:40 +0200 Subject: [PATCH] Add .VotingMembers() to config --- config/member.go | 11 +++++++++++ config/member_test.go | 11 +++++++++++ 2 files changed, 22 insertions(+) diff --git a/config/member.go b/config/member.go index eccf946..9fbbf76 100644 --- a/config/member.go +++ b/config/member.go @@ -34,6 +34,17 @@ func (c *Config) getMemberMaxId() int { return maxId } +// VotingMembers returns an int of how many members have zero or more votes +func (c *Config) VotingMembers() int { + var votingMembers int + for _, member := range c.Members { + if member.Votes > 0 { + votingMembers++ + } + } + return votingMembers +} + // Add a *Member struct to the Config, if it does not already exist. Takes in a *Member struct to be added. func (c *Config) AddMember(member *Member) { if c.HasMember(member.Host) { diff --git a/config/member_test.go b/config/member_test.go index 47e4680..67f6486 100644 --- a/config/member_test.go +++ b/config/member_test.go @@ -34,6 +34,17 @@ func TestGetMemberMaxIdBeforeAdd(t *testing.T) { assert.Equal(t, 0, testConfig.getMemberMaxId(), "config.getMemberMaxId() returned an incorrect value") } +func TestVotingMembers(t *testing.T) { + config := &Config{Members: []*Member{ + {Votes: 1}, + {Votes: 2}, + {Votes: 3}, + }} + assert.Equal(t, 3, config.VotingMembers(), ".VotingMembers() returned incorrect result") + config = &Config{Members: []*Member{}} + assert.Equal(t, 0, config.VotingMembers(), ".VotingMembers() returned incorrect result") +} + func TestGetMember(t *testing.T) { member := testConfig.GetMember("localhost:27017") assert.NotNil(t, member, "config.GetMember() returned nil")