def test200_970_CubeHasMissingIntegrityKey(self): expectedResult = {'status': 'error: missing integrity key'} parms = { 'cube': '11111111122222222233333333344444444455555555566666666' } actualResult = check._check(parms) self.assertDictEqual(expectedResult, actualResult)
def _rotate(parms): if (not ('cube' in parms)): return {'status': 'error: missing cube key'} if (parms['cube'] == ''): return {'status': 'error: missing cube value'} if (not ('integrity' in parms)): return {'status': 'error: missing integrity key'} if (not ('side' in parms)): return {'status': 'error: missing side key'} if (not (parms['side'] in directions)): return {'status': 'error: invalid side value'} validCube = check._check(parms) cubeFaces = [ parms['cube'][i:i + 9] for i in range(0, len(parms['cube']), 9) ] if ('error' in validCube['status']): return validCube elif (parms['side'] == 'f' or parms['side'] == 'F'): rotatedCube = _rotateFront(cubeFaces, parms['side']) elif (parms['side'] == 'b' or parms['side'] == 'B'): rotatedCube = _rotateBack(cubeFaces, parms['side']) elif (parms['side'] == 'l' or parms['side'] == 'L'): rotatedCube = _rotateLeft(cubeFaces, parms['side']) elif (parms['side'] == 'r' or parms['side'] == 'R'): rotatedCube = _rotateRight(cubeFaces, parms['side']) elif (parms['side'] == 't' or parms['side'] == 'T'): rotatedCube = _rotateTop(cubeFaces, parms['side']) elif (parms['side'] == 'u' or parms['side'] == 'U'): rotatedCube = _rotateBottom(cubeFaces, parms['side']) outputBytes = bytes(rotatedCube['rotatedCube'], 'utf-8') integrity = hashlib.sha256(outputBytes).hexdigest().upper() return { 'status': 'rotated', 'cube': rotatedCube['rotatedCube'], 'integrity': integrity }
def test200_965_CubeHasMissingIntegrityValue(self): expectedResult = {'status': 'error: missing integrity value'} parms = { 'cube': '11111111122222222233333333344444444455555555566666666', 'integrity': '' } actualResult = check._check(parms) self.assertDictEqual(expectedResult, actualResult)
def test200_915_MissingCubeKey(self): expectedResult = {'status': 'error: missing cube key'} parms = { 'integrity': 'F60549B12BC9C64FD37F15DD1CE16E16712AFC0181A84EA3898F070EBB29C60E' } actualResult = check._check(parms) self.assertDictEqual(expectedResult, actualResult)
def test200_960_CubeHasWrongIntegrityValue(self): expectedResult = {'status': 'error: incorrect integrity value'} parms = { 'cube': '111111111222222222333333333444444444555555555666666666', 'integrity': '88d897bd22e132d21a538745e63995b07d7c52ce9617a0979520545753ee0ded' } actualResult = check._check(parms) self.assertDictEqual(expectedResult, actualResult)
def test100_020_NominalSpotsCheck(self): expectedResult = {'status': 'spots'} parms = { 'cube': 'rrrrbrrrryyyyryyyyoooogoooowwwwowwwwbbbbybbbbggggwgggg', 'integrity': '8BE0EEDF13B2B464A2C7A120E6104AC7039B758E93D6F65651616FBBEED9A1EF' } actualResult = check._check(parms) self.assertDictEqual(expectedResult, actualResult)
def test100_040_NominalUnknownCheck(self): expectedResult = {'status': 'unknown'} parms = { 'cube': 'bbbooooooooogggggggggrrrrrrrrrbbbbbbwwwwwwwwwyyyyyyyyy', 'integrity': 'F60549B12BC9C64FD37F15DD1CE16E16712AFC0181A84EA3898F070EBB29C60E' } actualResult = check._check(parms) self.assertDictEqual(expectedResult, actualResult)
def test100_030_NominalCrossesCheck(self): expectedResult = {'status': 'crosses'} parms = { 'cube': 'ybybbbybybrbrrrbrbwgwgggwgwgogooogogryryyyryrowowwwowo', 'integrity': '3A2CA2368EDAB67D1EAB30A5DCA67757FC389AC2924E3EDAB522BAABF8403202' } actualResult = check._check(parms) self.assertDictEqual(expectedResult, actualResult)
def test100_010_NominalFullCheck(self): expectedResult = {'status': 'full'} parms = { 'cube': 'gggggggggyyyyyyyyybbbbbbbbbwwwwwwwwwrrrrrrrrrooooooooo', 'integrity': '763F71B164EF77E6916F1C2CBAEB3B2C3CA9A876AC6A94A97D6B0EF1C489E289' } actualResult = check._check(parms) self.assertDictEqual(expectedResult, actualResult)
def test200_930_Not9CubeStickersPerSide(self): expectedResult = { 'status': 'error: cube does not exactly have 9 of each element' } parms = { 'cube': '111111111222222222333333333444444444555555555666666665', 'integrity': 'FFFA07BE4BF1438C0C660DE9E9C0624640DC23856E875F6730F6195CEAF2AB61' } actualResult = check._check(parms) self.assertDictEqual(expectedResult, actualResult)
def test200_920_Not6CubeFaces(self): expectedResult = { 'status': 'error: cube does not have correct number of elements' } parms = { 'cube': '11111111122222222233333333344444444455555555566666666', 'integrity': '825E9253B6D7DB91050DA156E2CF524AE9B532B0C9C3DF89B01F18592850D5D3' } actualResult = check._check(parms) self.assertDictEqual(expectedResult, actualResult)
def test200_950_CubeHasImpossibleCorner(self): expectedResult = { 'status': 'error: cube has a corner that can not exist' } parms = { 'cube': 'bbgbbbbbbwoooooooogogggggggrrrrrrrrrwwwwwwwwbyyyyyyyyy', 'integrity': '573D39853F85AFD6E55A0760EFA1EBE8A7EACA41753055D9B41D0B3FC5C2E986' } actualResult = check._check(parms) self.assertDictEqual(expectedResult, actualResult)
def test200_955_CubeHasImpossibleEdge(self): expectedResult = { 'status': 'error: cube has an edge that can not exist' } parms = { 'cube': 'gwwrgyobwogwwwwboybrbgbrgrwroowybrgbyyoyoyobgyyrorbggr', 'integrity': '3C0BA8BDCEDE1484616367FF864B66B643B8AF08566F650C4A43148CEAC8D289' } actualResult = check._check(parms) self.assertDictEqual(expectedResult, actualResult)
def test200_925_Not6UniqueCubeFaces(self): expectedResult = { 'status': 'error: cube does not exactly have distinct center elements' } parms = { 'cube': '111111111222222222333333333444444444555555555111111111', 'integrity': '93C6A03A7B2F9F5D319128523FA96AB3C748C67EAA6FDD4DAC8311F4D0393921' } actualResult = check._check(parms) self.assertDictEqual(expectedResult, actualResult)
def test200_940_CubeDoesNotHaveDistinctCenterElements(self): expectedResult = { 'status': 'error: cube does not exactly have distinct center elements' } parms = { 'cube': '111141111222222222333333333144444444555555555666666666', 'integrity': '0628732992F58A84A7F291067AB6CC9DC9B1AD8428DC93EE5126B0CD88108B0E' } actualResult = check._check(parms) self.assertDictEqual(expectedResult, actualResult)
def _rotate(parms): if (not ('cube' in parms)): return {'status': 'error: Cube key missing'} if (parms['cube'] == ''): return {'status': 'error: Cube value missing'} if (not ('integrity' in parms)): return {'status': 'error: Integrity key missing'} if (parms['integrity'] == ''): return {'status': 'error: Integrity value missing'} if (not ('side' in parms)): return {'status': 'error: Rotation key missing'} if (parms['side'] == ''): return {'status': 'error: Rotation value missing'} if (not (parms['side'] in rotations)): return {'status': 'error: Rotation value not in library'} cubeIsValid = check._check(parms) facesofCube = [ parms['cube'][i:i + 9] for i in range(0, len(parms['cube']), 9) ] if ('error' in cubeIsValid['status']): return cubeIsValid #Front elif (parms['side'] == 'f' or parms['side'] == 'F'): rotateCube = _frontRotation(facesofCube, parms['side']) #Back elif (parms['side'] == 'b' or parms['side'] == 'B'): rotateCube = _backRotation(facesofCube, parms['side']) #Left elif (parms['side'] == 'l' or parms['side'] == 'L'): rotateCube = _leftRotation(facesofCube, parms['side']) #Right elif (parms['side'] == 'r' or parms['side'] == 'R'): rotateCube = _rightRotation(facesofCube, parms['side']) #Top elif (parms['side'] == 't' or parms['side'] == 'T'): rotateCube = _topRotation(facesofCube, parms['side']) #Under elif (parms['side'] == 'u' or parms['side'] == 'U'): rotateCube = _underRotation(facesofCube, parms['side']) cubeBytes = bytes(rotateCube['rotateCube'], 'utf-8') integrity = hashlib.sha256(cubeBytes).hexdigest().upper() return { 'status': 'rotated', 'cube': rotateCube['rotateCube'], 'integrity': integrity }
def test200_910_MissingCubeValue(self): expectedResult = {'status': 'error: missing cube value'} parms = {'cube': ''} actualResult = check._check(parms) self.assertDictEqual(expectedResult, actualResult)