How to use imgDataWordArrToColsAndRows method in backstopjs

Best JavaScript code snippet using backstopjs

diverged.js

Source:diverged.js Github

copy

Full Screen

...38    const img1wordArr = imgDataToWords(reference);39    const img2wordArr = imgDataToWords(test);40    console.timeEnd("imgDataToWords");41    console.time("imgDataWordArrToColsAndRows");42    let cols_rows_ref = imgDataWordArrToColsAndRows(img1wordArr, h, w);43    let cols_rows_test = imgDataWordArrToColsAndRows(img2wordArr, h, w);44    console.timeEnd("imgDataWordArrToColsAndRows");45    console.time("groupAdjacent");46    const columnRef = groupAdjacent(cols_rows_ref.columns, spread, h, w);47    const columnTest = groupAdjacent(cols_rows_test.columns, spread, h, w);48    console.timeEnd("groupAdjacent");49    console.time("columnDiffRaw");50    const columnDiffRaw = diffArr(columnRef, columnTest, h, w);51    console.timeEnd("columnDiffRaw");52    console.time("reduceColumnDiffRaw");53    const reducedColumnDiff = reduceColumnDiffRaw(columnDiffRaw, h, w);54    console.timeEnd("reduceColumnDiffRaw");55    // console.log("reducedColumnDiff>>>", reducedColumnDiff);56    57    console.time("unGroupAdjacent");58    const expandedColumns = ungroupAdjacent(reducedColumnDiff, spread, cols_rows_test.columns, h, w);59    console.timeEnd("unGroupAdjacent");60    console.time("columnWordDataToImgDataFormatAsWords");61    const convertedColumnDiffImgData = columnWordDataToImgDataFormatAsWords(expandedColumns, h, w);62    console.timeEnd("columnWordDataToImgDataFormatAsWords");63    // console.log("convertedColumnDiffImgData>>>", convertedColumnDiffImgData);64    console.time("imgDataWordsToClampedImgData");65    const imgDataArr = convertImgDataWordsToClampedImgData(convertedColumnDiffImgData);66    console.timeEnd("imgDataWordsToClampedImgData");67    // console.log("imgDataArr>>>", imgDataArr);68    console.timeEnd("diverged_total_time");69    return imgDataArr;70}71/**72 * ========= HELPERS ========73 */74function columnWordDataToImgDataFormatAsWords(columns, h, w) {75    const imgDataWordsLength = w * h;76    let convertedArr = new Array(imgDataWordsLength);77    for (var i = 0; i < imgDataWordsLength; i++) {78        const {column, depth} = serialToColumnMap(i, h, w);79        convertedArr[i] = columns[column][depth];80    }81    return convertedArr;82}83function convertImgDataWordsToClampedImgData(wordsArr) {84    let convertedArr = new Uint8ClampedArray(wordsArr.length * 4);85    for (var i = 0; i < wordsArr.length; i++) {86        const convertedOffset = i * 4;87        const segments = wordsArr[i].split('_');88        convertedArr[convertedOffset] = segments[0];89        convertedArr[convertedOffset+1] = segments[1];90        convertedArr[convertedOffset+2] = segments[2];91        convertedArr[convertedOffset+3] = segments[3];92    }93    return convertedArr;94}95function reduceColumnDiffRaw(columnDiffs, h, w) {96    let reducedColumns = new Array(columnDiffs.length);97    for (let columnIndex = 0; columnIndex < columnDiffs.length; columnIndex++) {98        const columnDiff = columnDiffs[columnIndex];99        let resultColumn = new Array();100        let removedCounter = 0;101        let resultClass = '';102        let segment = [];103        let debug = false;104        for (let depthIndex = 0; depthIndex < columnDiff.length; depthIndex++) {105            let segmentLength = 0;106            // Categorize the current segment107            if (columnDiff[depthIndex].removed) {108                segmentLength = columnDiff[depthIndex].count;109                removedCounter += segmentLength;110                resultClass = IS_REMOVED_WORD;111            } else {112                if (columnDiff[depthIndex].added) {113                    if (removedCounter) {114                        resultClass = IS_ADDED_AND_REMOVED_WORD;115                    } else {116                        resultClass = IS_ADDED_WORD;117                    }118                } else {119                    resultClass = IS_SAME_WORD;120                }121                segmentLength = columnDiff[depthIndex].count;122                if (removedCounter > 0) {123                    if (segmentLength > removedCounter) {124                        segmentLength -= removedCounter;125                        removedCounter = 0;126                    } else {127                        removedCounter -= segmentLength;128                        segmentLength = 0;129                    }130                }131            }132            // Limit segmentLength to total length of column133            if (!segmentLength) {134                continue;135            } else {136                segmentLength = Math.min(segmentLength, h - resultColumn.length);137            }138            const printSampleMap = false;139            if (!printSampleMap || resultClass !== IS_SAME_WORD){140                segment = new Array(segmentLength).fill(resultClass);141            } else {142                // reduced resolution image143                segment = columnDiff[depthIndex].value.slice(0,segmentLength).map((value, i) => {144                    if (/|/.test(value)) {145                        return value.split('|')[0];146                    }147                    return value;148                });149            }150            resultColumn = resultColumn.concat(segment);151            152            if (resultColumn.length > h) {153                console.log('WARNING -- this value is out of bounds!')154            }155        }156        157        reducedColumns[columnIndex] = resultColumn;158    }159    return reducedColumns;160}161function diffArr(refArr, testArr, h, w) {162    let rawResultArr = [];163    for (let i = 0; i < refArr.length; i++) {164        rawResultArr.push(LCS_DIFF_ARRAY_METHOD(refArr[i], testArr[i]));165    }166    return rawResultArr;167}168function groupAdjacent(columns, spread, h, w) {169    if (!spread) {170        return columns;171    }172    173    /**174     * [getAdjacentArrayBounds retuns existing adjacent lower and upper column bounds]175     * @param  {[int]} pointer [current index]176     * @param  {[int]} spread  [distance from index]177     * @param  {[int]} length     [total length]178     * @return {[array]}         [0] lower bound, [1] upper bound179     */180    function getAdjacentArrayBounds(pointer, spread, length) {181        return [182            // Math.max(0, pointer - spread),183            Math.max(0, pointer),184            Math.min(length - 1, pointer + spread)185        ]186    }187    function getInterpolatedSequence(beginning, end) {188        const interpolated = [];189        for (let step = beginning; step <= end; step++) {190            interpolated.push(step);191        }192        return interpolated;193    }194    function getCompositeColumnDepthValues(columns, sequence, depth) {195        return sequence.reduce((acc, column) => {196            return acc.concat(columns[column][depth]);197        }, [])198    }199    function getCompositeRowIndexValues(groupedColumns, sequence, column) {200        return sequence.reduce((acc, depth) => {201            return acc.concat(groupedColumns[column][depth]);202        }, [])203    }204    const groupedColumns = new Array();205    let columnPointer = 0;206    while (columnPointer < w) {207        const adjacentColumnBounds = getAdjacentArrayBounds(columnPointer, spread, w);208        const interpolatedColumns = getInterpolatedSequence(...adjacentColumnBounds);209        210        const columnComposite = new Array();211        for (var depth = 0; depth < h; depth++) {        212            columnComposite[depth] = getCompositeColumnDepthValues(columns, interpolatedColumns, depth).join('|');213        }214        groupedColumns.push(columnComposite);215        columnPointer += spread;216    }217    const groupedRows = new Array();218    if (rowSpread > 1) {219        for (var index = 0; index < groupedColumns.length; index++) {220            const rowComposite = new Array();221            let depthPointer = 0;222            while (depthPointer < h) {223                const adjacentRowBounds = getAdjacentArrayBounds(depthPointer, rowSpread, h);224                const interpolatedRows = getInterpolatedSequence(...adjacentRowBounds);225                rowComposite.push(getCompositeRowIndexValues(groupedColumns, interpolatedRows, index).join(','));226                depthPointer += rowSpread;227            }228            groupedRows[index] = rowComposite;229        }230    }231    return groupedRows.length ? groupedRows : groupedColumns ;232}233function ungroupAdjacent(grouped, spread, columnUnderlay, h, w) {234    if (!spread) {235        return grouped;236    }237    function mapUngroupedColumnIndexToGroupedIndex(index, spread) {238        return Math.floor(index / spread);239    }240    // expand columns241    const ungrouped = new Array(w);242    for (let index = 0; index < w; index++) {243         if (!ungrouped[index]) {244            ungrouped[index] = new Array(h);245         }246         const groupedIndexMap = mapUngroupedColumnIndexToGroupedIndex(index, spread);247         for (let depth = 0; depth < h; depth++) {248            const groupedDepthMap = rowSpread > 1 ? mapUngroupedColumnIndexToGroupedIndex(depth, rowSpread) : depth;249            const value = grouped[groupedIndexMap][groupedDepthMap].split('|')[0];250            ungrouped[index][depth] = value ? value : columnUnderlay[index][depth].replace(/\d+$/, OPACITY);251         }252    }253    return ungrouped254}255function imgDataWordArrToColsAndRows(arr, h, w) {256    let columns = new Array(w);257    let rows = new Array(h);258    for (var i = 0; i < arr.length; i++) {259        const word = arr[i];260        var {column, depth} = serialToColumnMap(i, h, w);261        if (!columns[column]) {262            columns[column] = new Array(h);263        }264        columns[column][depth] = word;265        266        var {row, index} = serialToRowMap(i, h, w);267        if (!rows[row]) {268            rows[row] = new Array(w);269        }...

Full Screen

Full Screen

Using AI Code Generation

copy

Full Screen

1const imgDataWordArrToColsAndRows = require('backstopjs/core/util/imgDataWordArrToColsAndRows');2const fs = require('fs');3const path = require('path');4const imgData = fs.readFileSync(path.resolve(__dirname, 'image.png'));5const imgDataWordArr = new Uint32Array(imgData.buffer);6const { cols, rows } = imgDataWordArrToColsAndRows(imgDataWordArr);7console.log('cols: ', cols);8console.log('rows: ', rows);

Full Screen

Using AI Code Generation

copy

Full Screen

1var imgDataWordArrToColsAndRows = require('./imgDataWordArrToColsAndRows');2var imgData = require('./imgData');3var wordArr = imgDataWordArrToColsAndRows(imgData);4console.log(wordArr);5module.exports = function(imgData, cols, rows) {6    var wordArr = [];7    var imgDataArr = imgData.split(' ');8    var i = 0;9    for (var r = 0; r < rows; r++) {10        wordArr[r] = [];11        for (var c = 0; c < cols; c++) {12            wordArr[r][c] = imgDataArr[i];13            i++;14        }15    }16    return wordArr;17};

Full Screen

Using AI Code Generation

copy

Full Screen

1const imgDataWordArrToColsAndRows = require('./node_modules/backstopjs/core/util/imgDataWordArrToColsAndRows');2const fs = require('fs');3const imgData = fs.readFileSync('test.txt', 'utf8');4const imgDataWordArr = imgData.split(' ');5const { cols, rows } = imgDataWordArrToColsAndRows(imgDataWordArr);6console.log(cols, rows);

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run backstopjs automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful