func scoreboardShow(db *sql.DB) { res, err := scoreboard.CollectLastResult(db) if err != nil { log.Fatalln("Get last result fail:", err) } scoreboard.CountScoreAndSort(&res) table := tablewriter.NewWriter(os.Stdout) table.SetHeader([]string{"Rank", "Name", "Score", "Attack", "Defence", "Advisory"}) for _, tr := range res.Teams { var row []string row = append(row, fmt.Sprintf("%d", tr.Rank)) row = append(row, tr.Name) row = append(row, fmt.Sprintf("%05.2f%%", tr.ScorePercent)) row = append(row, fmt.Sprintf("%.3f", tr.Attack)) row = append(row, fmt.Sprintf("%.3f", tr.Defence)) row = append(row, fmt.Sprintf("%d", tr.Advisory)) table.Append(row) } table.Render() }
func TestCountScoreboard(*testing.T) { res := scoreboard.Result{} res.Teams = append(res.Teams, scoreboard.TeamResult{ Attack: 10, Defence: 10, Advisory: 50}) res.Teams = append(res.Teams, scoreboard.TeamResult{ Attack: 0, Defence: 0, Advisory: 0}) res.Teams = append(res.Teams, scoreboard.TeamResult{ Attack: 100, Defence: 100, Advisory: 100}) res.Teams = append(res.Teams, scoreboard.TeamResult{ Attack: 0, Defence: 10, Advisory: 10}) scoreboard.CountScoreAndSort(&res) sort.Sort(scoreboard.ByScore(res.Teams)) for rank := 1; rank <= 4; rank++ { if res.Teams[rank-1].Rank != rank { log.Fatalln("team", rank, "rank is not", rank) } } if res.Teams[0].ScorePercent != 100 { log.Fatalln("First team score != 100%") } }