/**
 * Created by Tony on 2017/4/5.
 */

var test = require('tape');
var headerStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';

test('test private 1', function(t){
    private_getCellIdxStr = function(idx, pre){
        var rst = 'A', prefix = '', tmpIdx = idx;
        if (tmpIdx >= 26) {
            var ti = Math.floor(tmpIdx / 26), tj = tmpIdx % 26;
            if (ti <= 26) {
                rst = pre + headerStr[ti - 1] + headerStr[tj];
            } else {
                //rst = private_getCellIdxStr2(ti, 'A' + pre) + headerStr[tj];
                rst = private_getCellIdxStr2(ti, 'A' + pre) + headerStr[tj];
            }
        } else {
            rst = pre + headerStr[tmpIdx % 26];
        }
        return rst;
    };
    private_getCellIdxStr2 = function(idx){
        var rst = 'A';
        if (idx < 26) {
            rst = headerStr[idx];
        } else if (idx < 26*26+26) {
            var ti = Math.floor(idx / 26), tj = idx % 26;
            rst = headerStr[ti - 1] + headerStr[tj];
        } else if (idx < 26*26*26+26) {
            var ti = Math.floor(idx / (26*26)), tj = Math.floor((idx - ti * 26*26) / 26), tk = idx % 26;
            rst = headerStr[ti - 1] + headerStr[tj-1] + headerStr[tk];
        }
        return rst;
    };
    t.equal(private_getCellIdxStr2(0, ''), 'A');
    t.equal(private_getCellIdxStr2(20, ''), 'U');
    t.equal(private_getCellIdxStr2(25, ''), 'Z');
    t.equal(private_getCellIdxStr2(26, ''), 'AA');
    t.equal(private_getCellIdxStr2(27, ''), 'AB');
    t.equal(private_getCellIdxStr2(51, ''), 'AZ');
    t.equal(private_getCellIdxStr2(52, ''), 'BA');
    t.equal(private_getCellIdxStr2(77, ''), 'BZ');
    t.equal(private_getCellIdxStr2(103, ''), 'CZ');
    t.equal(private_getCellIdxStr2(675, ''), 'YZ');
    t.equal(private_getCellIdxStr2(676, ''), 'ZA');
    t.equal(private_getCellIdxStr2(701, ''), 'ZZ');
    t.equal(private_getCellIdxStr2(702, ''), 'AAA');
    t.equal(private_getCellIdxStr2(727, ''), 'AAZ');
    t.equal(private_getCellIdxStr2(728, ''), 'ABA');
    t.end();
})
