Last active
May 30, 2025 09:32
-
-
Save simararora07/260b3327933829414bea04803a3f00ad to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
abstract class TennisGame { | |
void wonPoint(String playerName); | |
String getScore(); | |
} | |
class TennisGame1 implements TennisGame { | |
int _m_score1 = 0; | |
int _m_score2 = 0; | |
late String _player1Name; | |
late String _player2Name; | |
TennisGame1(String player1Name, String player2Name) { | |
this._player1Name = player1Name; | |
this._player2Name = player2Name; | |
} | |
@override | |
void wonPoint(String playerName) { | |
if (playerName == "player1") { | |
_m_score1 += 1; | |
} else { | |
_m_score2 += 1; | |
} | |
} | |
@override | |
String getScore() { | |
String score = ""; | |
int tempScore=0; | |
if (_m_score1==_m_score2) | |
{ | |
switch (_m_score1) | |
{ | |
case 0: | |
score = "Love-All"; | |
break; | |
case 1: | |
score = "Fifteen-All"; | |
break; | |
case 2: | |
score = "Thirty-All"; | |
break; | |
default: | |
score = "Deuce"; | |
break; | |
} | |
} | |
else if (_m_score1>=4 || _m_score2>=4) | |
{ | |
int minusResult = _m_score1-_m_score2; | |
if (minusResult==1) { | |
score ="Advantage player1"; | |
} else if (minusResult ==-1) { | |
score ="Advantage player2"; | |
} else if (minusResult>=2) { | |
score = "Win for player1"; | |
} else { | |
score ="Win for player2"; | |
} | |
} | |
else | |
{ | |
for (int i=1; i<3; i++) | |
{ | |
if (i==1) { | |
tempScore = _m_score1; | |
} else { score+="-"; tempScore = _m_score2;} | |
switch(tempScore) | |
{ | |
case 0: | |
score+="Love"; | |
break; | |
case 1: | |
score+="Fifteen"; | |
break; | |
case 2: | |
score+="Thirty"; | |
break; | |
case 3: | |
score+="Forty"; | |
break; | |
} | |
} | |
} | |
return score; | |
} | |
} | |
// Test | |
import 'package:flutter_test/flutter_test.dart'; | |
import 'dart:math'; | |
import 'package:tennis_game/tennis_game.dart'; | |
import 'package:tennis_game/tennis_game_one.dart'; | |
main() { | |
var allScores = [ | |
TennisTest(0, 0, "Love-All"), | |
TennisTest(1, 1, "Fifteen-All"), | |
TennisTest(2, 2, "Thirty-All"), | |
TennisTest(3, 3, "Deuce"), | |
TennisTest(4, 4, "Deuce"), | |
TennisTest(1, 0, "Fifteen-Love"), | |
TennisTest(0, 1, "Love-Fifteen"), | |
TennisTest(2, 0, "Thirty-Love"), | |
TennisTest(0, 2, "Love-Thirty"), | |
TennisTest(3, 0, "Forty-Love"), | |
TennisTest(0, 3, "Love-Forty"), | |
TennisTest(4, 0, "Win for player1"), | |
TennisTest(0, 4, "Win for player2"), | |
TennisTest(2, 1, "Thirty-Fifteen"), | |
TennisTest(1, 2, "Fifteen-Thirty"), | |
TennisTest(3, 1, "Forty-Fifteen"), | |
TennisTest(1, 3, "Fifteen-Forty"), | |
TennisTest(4, 1, "Win for player1"), | |
TennisTest(1, 4, "Win for player2"), | |
TennisTest(3, 2, "Forty-Thirty"), | |
TennisTest(2, 3, "Thirty-Forty"), | |
TennisTest(4, 2, "Win for player1"), | |
TennisTest(2, 4, "Win for player2"), | |
TennisTest(4, 3, "Advantage player1"), | |
TennisTest(3, 4, "Advantage player2"), | |
TennisTest(5, 4, "Advantage player1"), | |
TennisTest(4, 5, "Advantage player2"), | |
TennisTest(15, 14, "Advantage player1"), | |
TennisTest(14, 15, "Advantage player2"), | |
TennisTest(6, 4, "Win for player1"), | |
TennisTest(4, 6, "Win for player2"), | |
TennisTest(16, 14, "Win for player1"), | |
TennisTest(14, 16, "Win for player2"), | |
]; | |
void checkAllScores(TennisGame game, TennisTest test) { | |
int highestScore = max(test.player1Score, test.player2Score); | |
for (int i = 0; i < highestScore; i++) { | |
if (i < test.player1Score) game.wonPoint("player1"); | |
if (i < test.player2Score) game.wonPoint("player2"); | |
} | |
expect(game.getScore(), test.expectedScore); | |
} | |
group('checkAllScoresTennisGame1', () { | |
allScores.forEach((tested) { | |
test('${tested.player1Score} - ${tested.player2Score} - ${tested.expectedScore}', () { | |
TennisGame1 game = TennisGame1("player1", "player2"); | |
checkAllScores(game, tested); | |
}); | |
}); | |
}); | |
} | |
class TennisTest { | |
int player1Score; | |
int player2Score; | |
String expectedScore; | |
TennisTest(this.player1Score, this.player2Score, this.expectedScore) {} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment