| /* |
| * GMActualResultsLoader: |
| * Reads an actual-results.json file, and imports its data into $scope. |
| */ |
| var GMActualResultsLoader = angular.module( |
| 'GMActualResultsLoader', |
| [], |
| function($httpProvider) { |
| /* Override transformResponse so that the numeric checksums are interpreted as |
| * strings instead, since Javascript cannot handle 64-bit integers. */ |
| $httpProvider.defaults.transformResponse = function(data, headersGetter) { |
| return JSON.parse(data.replace(/\s(\d+)\s/g, " \"$1\" ")); |
| } |
| } |
| ); |
| GMActualResultsLoader.controller( |
| 'GMActualResultsLoader.Controller', |
| function($scope, $http) { |
| /* When the changePlatformPath function is called, download actual-results.json |
| * from the desired platform directory. |
| * |
| * When the JSON is received, predigest it (combining actual and expected results for each |
| * test) and return it to the frontend as $scope.gmActualResults like so: |
| * |
| * [ |
| * {"resultType": "failed", |
| * "resultsOfThisType": [ |
| * {"test":"bigmatrix", "config":"gpu", |
| * "actualHashType": "bitmap-64bitMD5", "actualHashValue": "1234", |
| * "expectedHashType": "bitmap-64bitMD5", "actualHashValue": "6789"}, |
| * {"test":"bigmatrix", "config":"8888", |
| * "actualHashType": "bitmap-64bitMD5", "actualHashValue": "5678", |
| * "expectedHashType": "bitmap-64bitMD5", "actualHashValue": "6789"}, |
| * more tests... |
| * ]}, |
| * {"resultType": "no-comparison", |
| * "resultsOfThisType": [ |
| * {"test":"aaclip", "config":"gpu", |
| * "actualHashType": "bitmap-64bitMD5", "actualHashValue": "8765"}, |
| * {"test":"aaclip", "config":"8888", |
| * "actualHashType": "bitmap-64bitMD5", "actualHashValue": "4321"}, |
| * more tests... |
| * ]}, |
| * more result types... |
| * ] |
| */ |
| $scope.changePlatformPath = function() { |
| $http.get($scope.platformPath + "/actual-results.json").success( |
| function(response) { |
| var jsonResults = []; |
| var imageNameRegex = /^(.+)_([^_]+).png/; |
| angular.forEach(response['actual-results'], function(resultsOfThisType, resultType) { |
| var resultCollection = []; |
| angular.forEach(resultsOfThisType, function(hashTypeAndValue, imageName) { |
| var matched = imageNameRegex.exec(imageName); |
| var thisResult = { |
| test: matched[1], config: matched[2], |
| actualHashType: hashTypeAndValue[0], actualHashValue: hashTypeAndValue[1] }; |
| var expectations = response['expected-results'][imageName]['allowed-digests']; |
| if (expectations != null) { |
| thisResult.expectedHashType = expectations[0][0]; |
| thisResult.expectedHashValue = expectations[0][1]; |
| } |
| resultCollection.push(thisResult); |
| }); |
| var resultTypeAndCollection = { resultType: resultType, |
| resultsOfThisType: resultCollection }; |
| jsonResults.push(resultTypeAndCollection); |
| }); |
| $scope.gmActualResults = jsonResults; |
| } |
| ); |
| }; |
| } |
| ); |