/* * GMExpectedResultsLoader: * Reads an expected-results.json file, and imports its data into $scope. */ var GMExpectedResultsLoader = angular.module( 'GMExpectedResultsLoader', [], 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\" ")); } } ); GMExpectedResultsLoader.controller( 'GMExpectedResultsLoader.Controller', function($scope, $http) { /* When the changePlatformPath function is called, download expected-results.json * from the desired platform directory. * * When the JSON is received, predigest it and return it to the frontend as * $scope.gmExpectedResults . */ $scope.changePlatformPath = function() { $http.get($scope.platformPath + "/expected-results.json").success( function(response) { var jsonResults = []; var imageNameRegex = /^(.+)_([^_]+).png/; angular.forEach(response['expected-results'], function(imageExpectations, imageName) { var matched = imageNameRegex.exec(imageName); var allowedImages = []; angular.forEach(imageExpectations['allowed-digests'], function(allowedDigest, key) { var thisImage = { hashType: allowedDigest[0], hashValue: allowedDigest[1] }; allowedImages.push(thisImage); }); var thisResult = { test: matched[1], config: matched[2], allowedImages: allowedImages, bugs: imageExpectations['bugs'], reviewedByHuman: imageExpectations['reviewed-by-human'] }; jsonResults.push(thisResult); }); $scope.gmExpectedResults = jsonResults; } ); }; } );