Created
September 25, 2013 18:53
-
-
Save timmyomahony/6704263 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
var single_pair_validator = function(hand){ | |
}; | |
var high_card_validation = function(white_numbered_hand, black_numbered_hand){ | |
for(var i=0; i < white_numbered_hand.length; i++){ | |
if(white_numbered_hand[i] > black_numbered_hand[i]){ | |
return "White wins"; | |
} | |
if(white_numbered_hand[i] < black_numbered_hand[i]){ | |
return "Black wins"; | |
} | |
} | |
return "They tie"; | |
}; | |
var poker_validator = function(white_hand, black_hand) { | |
var white_numbered_hand = convert_hand_to_numbers(white_hand); | |
white_numbered_hand = white_numbered_hand.sort(sortNumber); | |
var black_numbered_hand = convert_hand_to_numbers(black_hand); | |
black_numbered_hand = black_numbered_hand.sort(sortNumber); | |
var validators = [high_card_validation]; | |
var result; | |
for(var i = 0; i < validators.length; i++){ | |
result = validators[i](white_numbered_hand, black_numbered_hand); | |
} | |
return result; | |
}; | |
var convert_card_to_number = function(card){ | |
var rank = card.slice(0, card.length - 1); | |
var suit = card.slice(-1); | |
var number = parseInt(rank); | |
if(!isNaN(number)){ | |
return number; | |
} | |
return { | |
"J": 11, | |
"Q": 12, | |
"K": 13, | |
"A": 14 | |
}[rank]; | |
}; | |
var convert_hand_to_numbers = function(hand){ | |
var result = Array(); | |
for(var i=0; i < hand.length; i++){ | |
result.push(convert_card_to_number(hand[i])); | |
} | |
return result; | |
} | |
var highest_card = function(hand){ | |
var numbered_hand = convert_hand_to_numbers(hand); | |
return numbered_hand.sort(sortNumber)[0]; | |
}; | |
function sortNumber(a,b) { | |
return b - a; | |
} |
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
describe('Highest Card Finder',function(){ | |
it('finds highest number', function(){ | |
var hand = ['2H', '3D', '5S', '9C', '4H']; | |
expect(highest_card(hand)).toBe(9); | |
}); | |
it('finds king', function(){ | |
var hand = ['2H', '3D', '5S', '9C', 'KH']; | |
expect(highest_card(hand)).toBe(13); | |
}); | |
it('finds queen', function(){ | |
var hand = ['2H', '3D', '5S', '9C', 'QH']; | |
expect(highest_card(hand)).toBe(12); | |
}); | |
}); | |
describe('Convert Card To Number',function(){ | |
it('converts number', function(){ | |
expect(convert_card_to_number("4H")).toBe(4); | |
}); | |
it('converts non number', function(){ | |
expect(convert_card_to_number("JH")).toBe(11); | |
}); | |
it('converts 10', function(){ | |
expect(convert_card_to_number("10H")).toBe(10); | |
}); | |
}); | |
describe('Convert Hand To Numbers',function(){ | |
it('converts number', function(){ | |
var hand = ["4H", "3C", "KD", "AS", "8S"]; | |
var result = [4,3,13,14,8]; | |
expect(convert_hand_to_numbers(hand)).toEqual(result); | |
}); | |
it('converts non number', function(){ | |
expect(convert_card_to_number("JH")).toBe(11); | |
}); | |
}); | |
describe('Poker Validator',function(){ | |
it('says black wins',function(){ | |
var white_hand = ['2H', '3D', '5S', '9C', 'KD']; | |
var black_hand = ['2C', '3H', '4S', '8C', 'AH']; | |
expect(poker_validator(white_hand, black_hand)).toBe('Black wins'); | |
}); | |
it('says white wins',function(){ | |
var black_hand = ['2H', '3D', '5S', '9C', 'KD']; | |
var white_hand = ['2C', '3H', '4S', '8C', 'AH']; | |
expect(poker_validator(white_hand, black_hand)).toBe('White wins'); | |
}); | |
it('says they tie with same cards',function(){ | |
var black_hand = ['2H', '3D', '5S', '9C', 'KD']; | |
var white_hand = ['2C', '3H', '5C', '9H', 'KH']; | |
expect(poker_validator(white_hand, black_hand)).toBe('They tie'); | |
}); | |
it('says black wins with matching highest card',function(){ | |
var black_hand = ['2H', '3D', '5S', '9C', 'KD']; | |
var white_hand = ['2C', '3H', '4S', '8C', 'KH']; | |
expect(poker_validator(white_hand, black_hand)).toBe('Black wins'); | |
}); | |
it('says white wins with matching highest card with reversed ordering',function(){ | |
var black_hand = ['KD', '2H', '3D', '7C', '5S']; | |
var white_hand = ['2C', 'KH', '3H', '4S', '8C']; | |
expect(poker_validator(white_hand, black_hand)).toBe('White wins'); | |
}); | |
}); | |
describe('Pair Validator',function(){ | |
it('hand has pair',function(){ | |
var hand = ['2H', '2D', '5S', '9C', 'KD']; | |
expect(pair_validator(hand)).toBeTruthy(); | |
}); | |
}); | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment