Esempio n. 1
0
def test_default_width():
    ssfw = SSF(default_width=2)
    assert ssfw.format('0', 1) == ' 1'
    assert ssfw.format('@', 1) == '1 '
    assert ssfw.format('General', 1) == ' 1'
    assert ssfw.format('General', 'a') == 'a '
    assert ssfw.format('General', 123) == '##'
Esempio n. 2
0
def test_should_override():
    #    assert.equal(SSF.format('m/d/yy', 43880), "2/19/20");
    assert ssf.format('m/d/yyyy', 43880) == "2/19/2020"
    #    assert.equal(SSF.format('m/d/yy', 43880, {dateNF:"yyyy-mm-dd"}), "2020-02-19");
    ssfNF = SSF(dateNF="yyyy-mm-dd")
    assert ssfNF.format('m/d/yyyy', 43880) == "2020-02-19"
    #    assert.equal(SSF.format('m/d/yy', 43880, {dateNF:"dd/mm/yyyy"}), "19/02/2020");
    ssfNF = SSF(dateNF="dd/mm/yyyy")
    assert ssfNF.format('m/d/yyyy', 43880) == "19/02/2020"
Esempio n. 3
0
def test_no_locale():
    ssf = SSF(locale_support=False)
    assert ssf.format('#,##0', 1234) == '1,234'
    assert ssf.format('#,##0', 12345678) == '12,345,678'
    assert ssf.format('0', 12345678) == '12345678'
    assert ssf.format(14, '1/01/2020') == '1/1/2020'

    ssf.format('mmmm', '1/1/2020') == 'January'
    ssf.format('mmmm', '1/1/2020', locale='fr-FR') == 'January'
    ssf.format('[$-40C]mmmm', '1/1/2020') == 'January'
Esempio n. 4
0
def test_dateNF():
    #  it('should override format code 14', function() {
    #    assert.equal(SSF.format(14, 43880), "2/19/20");
    assert ssf.format(
        14, 43880) == "2/19/2020"  # Note format 14 now uses a 4-digit year
    #    assert.equal(SSF.format(14, 43880, {dateNF:"yyyy-mm-dd"}), "2020-02-19");
    ssfNF = SSF(dateNF="yyyy-mm-dd")
    assert ssfNF.format(14, 43880) == "2020-02-19"
    #    assert.equal(SSF.format(14, 43880, {dateNF:"dd/mm/yyyy"}), "19/02/2020");
    ssfNF = SSF(dateNF="dd/mm/yyyy")
    assert ssfNF.format(14, 43880) == "19/02/2020"
Esempio n. 5
0
def test_issue_11():
    ssfc = SSF(color_pre='<color name="{}" rgb="#{rgb}">',
               color_post='</color {}>')
    assert ssfc.format('0', 0) == '0'
    assert ssfc.format('[Red]0',
                       0) == '<color name="Red" rgb="#FF0000">0</color Red>'
    assert ssfc.format(
        '[Color2]0',
        0) == '<color name="Color2" rgb="#FFFFFF">0</color Color2>'
    assert ssfc.format(
        '[Color 2]0',
        0) == '<color name="Color2" rgb="#FFFFFF">0</color Color2>'
Esempio n. 6
0
def test_bad_locale():
    try:
        ssf = SSF(locale='oops', errors='raise')
        assert False
    except ValueError as e:
        assert str(e) == 'Locale oops not found!'

    ssf = SSF(locale='oops', errors='pounds')
    assert ssf.format('0', 1, width=1) == '#'

    ssf = SSF(locale='oops', errors='ignore')
    assert ssf.format('0', 1) == '1'
    assert ssf.format(14, '1/02/2020') == '1/2/2020'
Esempio n. 7
0
def test_alternate_calendars_4():
    ssff = SSF(locale='fr-FR', errors='raise')

    # Chinese Lunar 13
    # Non leap year:
    assert ssff.format('[$-137C92]yyyy-mm-dd', 43840) == '2019-12-16'
    assert ssff.format('[$-137C92]yyyy-mm-dd', 43869) == '2020-01-15'
    # Leap year:
    assert ssff.format('[$-137C92]yyyy-mm-dd', 44190) == '2020-12-11'
    assert ssff.format('[$-137C92]yyyy-mm-dd', 44219) == '2020-13-11'

    # UM_AL_QURA 17
    assert ssff.format('[$-171809]dddd mmmm d, yyyy',
                       43836) == 'AlEthnien Jamada El Oula 11, 1441'
Esempio n. 8
0
def test_general_dates():
#    assert.equal(SSF.format("General", new Date(2017, 1, 19)), "2/19/17");
    assert ssf.format("General", date(2017, 2, 19)) == "2/19/2017"      # https://github.com/SheetJS/ssf/issues/55
#    assert.equal(SSF.format("General", new Date(2017, 1, 19), {date1904:true}), "2/19/17");
    ssf1904 = SSF(date1904=True)
    assert ssf1904.format("General", date(2017, 2, 19)) == "2/19/2017"      # https://github.com/SheetJS/ssf/issues/55
#    assert.equal(SSF.format("General", new Date(1901, 0, 1)), "1/1/01");
    assert ssf.format("General", date(1901, 1, 1)) == "1/1/1901"
#    if(SSF.format("General", new Date(1901, 0, 1), {date1904:true}) == "1/1/01") throw new Error("date1904 invalid date");
    assert ssf1904.format("General", date(1901, 1, 1)) == '##########'
#    assert.equal(SSF.format("General", new Date(1904, 0, 1)), "1/1/04");
    assert ssf.format("General", date(1904, 1, 1)) == "1/1/1904"
#    assert.equal(SSF.format("General", new Date(1904, 0, 1), {date1904:true}), "1/1/04");
    assert ssf1904.format("General", date(1904, 1, 1)) == "1/1/1904"
Esempio n. 9
0
def test_issue_13(monkeypatch):
    import locale

    real_setlocale = locale.setlocale

    def mock_setlocale(typ, locale):
        assert False  # Shouldn't come here!

    monkeypatch.setattr(locale, 'setlocale', mock_setlocale)
    try:
        ssfu = SSF(locale='nl')
        assert ssfu.format('Currency', 1.98) == '\u20AC 1,98'
        ssfi = SSF(locale='is')
        assert ssfi.format('Accounting', 12.98) == ' 13 kr'
        assert ssfu.format('#,###.00', 1234.56, locale='de-DE') == '1.234,56'
    finally:
        monkeypatch.setattr(locale, 'setlocale', real_setlocale)
Esempio n. 10
0
def test_issue_10(monkeypatch):
    import locale

    try:  # v0.2.2
        locale.setlocale(locale.LC_ALL,
                         'en-US')  # This raises locale.Error on linux
        locale.setlocale(locale.LC_ALL, '')
    except locale.Error:
        return  # Only do this test on Windoze!!

    real_setlocale = locale.setlocale

    def mock_setlocale(typ, locale):
        """Act like the Unix version of setlocale - don't accept
        any 2-letter locales and don't accept any '-'"""
        #print(f'mock_setlocale({typ}, {locale})')
        if not locale:
            return locale
        if len(locale) == 2 or '-' in locale:
            raise ValueError("Bad Linux Locale")
        if locale == 'dutch':
            real_setlocale(typ, 'nl')
        elif locale == 'icelandic':
            real_setlocale(typ, 'is')
        elif locale == 'de_DE':
            real_setlocale(typ, 'de-DE')
        return locale

    monkeypatch.setattr(locale, 'setlocale', mock_setlocale)
    try:
        ssfu = SSF(locale='nl')
        assert ssfu.format('Currency', 1.98) == '\u20AC 1,98'
        ssfi = SSF(locale='is')
        assert ssfi.format('Accounting', 12.98) == ' 13 kr'
        assert ssfu.format('#,###.00', 1234.56, locale='de-DE') == '1.234,56'
    finally:
        monkeypatch.setattr(locale, 'setlocale', real_setlocale)
Esempio n. 11
0
def test_issue_14():
    ssfnf = SSF(dateNF='m/d/yy')
    assert ssfnf.format(14, '12/31/1999') == '12/31/99'
Esempio n. 12
0
def test_locale_simple():
    """Start by just testing a few simple cases"""
    ssfe = SSF(locale='en-US')
    assert ssfe.format('#,###.00', 1000000) == '1,000,000.00'
    assert ssfe.format('#,###.00',
                       1000000,
                       decimal_separator=',',
                       thousands_separator='.') == '1.000.000,00'
    assert ssfe.format('#,###.00', 1000000,
                       decimal_separator='!') == '1,000,000!00'
    assert ssfe.format('#,###.00',
                       1000000,
                       decimal_separator='!',
                       thousands_separator='@') == '1@000@000!00'
    assert ssfe.format('#,###.00', 1000000, locale='en-US') == '1,000,000.00'
    assert ssfe.format('#,###.00', 1000000, locale='de-DE') == '1.000.000,00'
    assert ssfe.format('#,###.00', 1000000,
                       locale='fr-FR') == '1\u202f000\u202f000,00'
    assert ssfe.format('#,###.00', 1000000, locale='hi_IN') == '10,00,000.00'
    assert ssfe.format('#,###.00', 1000000) == '1,000,000.00'
    assert ssfe.format(
        '[$-409]#,###.00', 1000000, locale='de-DE'
    ) == '1.000.000,00'  # Format does NOT override locale arg for ,.
    assert ssfe.format('dddd, mmmm d, yyyy',
                       '9/26/2020') == 'Saturday, September 26, 2020'
    assert ssfe.format('[$-409]dddd, mmmm d, yyyy',
                       '9/26/2020',
                       locale='fr-FR') == 'Saturday, September 26, 2020'
    assert ssfe.format('Currency', 1000.98) == '$1,000.98'
    assert ssfe.format('Currency', 1000.98,
                       locale='de-DE') == '1.000,98 €'  # Euros

    ssfd = SSF(locale='de-DE')
    assert ssfd.format('#,###.00', 1000000, locale='en-US') == '1,000,000.00'
    assert ssfd.format('#,###.00', 1000000) == '1.000.000,00'
    assert ssfe.format('#,###.00',
                       1000000,
                       decimal_separator='!',
                       thousands_separator='@') == '1@000@000!00'
    assert ssfd.format('#,###.00', 1000000, locale='de-DE') == '1.000.000,00'
    assert ssfd.format('#,###.00', 1000000,
                       locale='fr-FR') == '1\u202f000\u202f000,00'
    assert ssfd.format('#,###.00', 1000000, locale='hi_IN') == '10,00,000.00'
    assert ssfd.format('#,###.00', 1000000) == '1.000.000,00'
    assert ssfd.format(
        '[$-409]#,###.00',
        1000000) == '1.000.000,00'  # Format does NOT override default for ,.
    assert ssfd.format(
        '[$-409]#,###.00', 1000000,
        locale='hi_IN') == '10,00,000.00'  # Format does NOT override ,.
    assert ssfd.format('[$-409]dddd, mmmm d, yyyy',
                       '9/26/2020') == 'Saturday, September 26, 2020'
    assert ssfd.format('[$-409]dddd, mmmm d, yyyy',
                       '9/26/2020',
                       locale='fr-FR') == 'Saturday, September 26, 2020'
    assert ssfd.format('dddd, mmmm d, yyyy',
                       '9/26/2020') == 'Samstag, September 26, 2020'
    assert ssfd.format('dddd, mmmm d, yyyy', '9/26/2020',
                       locale='fr-FR') == 'samedi, septembre 26, 2020'
    assert ssfd.format('[$-40C]dddd, mmmm d, yyyy',
                       '9/26/2020') == 'samedi, septembre 26, 2020'
    assert ssfd.format('[$-40c]dddd, mmmm d, yyyy',
                       '9/26/2020') == 'samedi, septembre 26, 2020'
    assert ssfd.format('dddd, mmmm d, yyyy',
                       '10/26/2020') == 'Montag, Oktober 26, 2020'

    ssfj = SSF(locale='ja-JP')
    assert ssfj.format('#,###.00', 1000000, locale='en-US') == '1,000,000.00'
    assert ssfj.format('#,###.00', 1000000) == '1,000,000.00'
    assert ssfj.format('#,###.00', 1000000, locale='de-DE') == '1.000.000,00'
    assert ssfj.format('#,###.00', 1000000,
                       locale='fr-FR') == '1\u202f000\u202f000,00'
    assert ssfj.format('#,###.00', 1000000, locale='hi_IN') == '10,00,000.00'
    assert ssfj.format('#,###.00', 1000000) == '1,000,000.00'
    assert ssfj.format('[$-409]#,###.00', 1000000) == '1,000,000.00'
    assert ssfj.format(
        '[$-409]#,###.00', 1000000,
        locale='hi_IN') == '10,00,000.00'  # Format does NOT override ,.
    assert ssfj.format('[$-409]dddd, mmmm d, yyyy',
                       '9/26/2020') == 'Saturday, September 26, 2020'
    assert ssfj.format('[$-409]dddd, mmmm d, yyyy',
                       '9/26/2020',
                       locale='fr-FR') == 'Saturday, September 26, 2020'
    assert ssfj.format('dddd, mmmm d, yyyy', '9/26/2020') == '土曜日, 9月 26, 2020'
    assert ssfj.format('dddd, mmmm d, yyyy', '9/26/2020',
                       locale='fr-FR') == 'samedi, septembre 26, 2020'
    assert ssfj.format('[$-40C]dddd, mmmm d, yyyy',
                       '9/26/2020') == 'samedi, septembre 26, 2020'
    assert ssfj.format('[$-40c]dddd, mmmm d, yyyy',
                       '9/26/2020') == 'samedi, septembre 26, 2020'
    assert ssfj.format('[$-fr-FR]dddd, mmmm d, yyyy',
                       '9/26/2020') == 'samedi, septembre 26, 2020'
    assert ssfj.format('[$-FR_fr]dddd, mmmm d, yyyy',
                       '9/26/2020') == 'samedi, septembre 26, 2020'
    assert ssfj.format('[DBNum1]0', 123) == '一二三'
    assert ssfj.format('[DBNum1]0', 987654) == '九八七六五四'
    assert ssfj.format('[DBNum2]0', 123) == '壱弐参'
    assert ssfj.format('[DBNum3]0', 123) == '123'
    assert ssfj.format('[DBNum1][$-404]0', 0) == '○'
    assert ssfj.format('[DBNum1][$-412]0', 0) == '0'
    # Issue #9: Test eras:
    assert ssfj.format('g gg ggg e', '1/1/1900') == 'M 明 明治 33'
    assert ssfj.format('g gg ggg e', '7/29/1912') == 'M 明 明治 45'
    assert ssfj.format('g gg ggg e', '7/30/1912') == 'T 大 大正 1'
    assert ssfj.format('g gg ggg e', '12/24/1926') == 'T 大 大正 15'
    assert ssfj.format('g gg ggg e', '12/25/1926') == 'S 昭 昭和 1'
    assert ssfj.format('g gg ggg e', '1/7/1989') == 'S 昭 昭和 64'
    assert ssfj.format('g gg ggg e', '1/8/1989') == 'H 平 平成 1'
    assert ssfj.format('[$-ja-JP-x-gannen]g gg ggg e',
                       '1/8/1989') == 'H 平 平成 元'
    assert ssfj.format('g gg ggg e', '4/30/2019') == 'H 平 平成 31'
    assert ssfj.format('g gg ggg e', '5/1/2019') == 'R 令 令和 1'
    assert ssfj.format('g gg ggg e', '1/1/2020') == 'R 令 令和 2'
    assert ssfj.format('[$-ja-JP-x-gannen]g gg ggg e',
                       '5/1/2019') == 'R 令 令和 元'
    assert ssfj.format('[$-ja-JP-x-gannen]g gg ggg e',
                       '1/1/2020') == 'R 令 令和 2'

    # Test [$-lg-CN,xxyy] and [$-xxyyzzzz]
    assert ssfe.format(r'[$-4000439]h:mm:ss\ AM/PM;@',
                       12.3456789) == '८:१७:४७ पूर्वाह्न'
    assert ssfe.format(r'[$-hi-IN,400]h:mm:ss\ AM/PM;@',
                       12.3456789) == '८:१७:४७ पूर्वाह्न'
    assert ssfe.format(r'[$-4010439]d/m/yyyy\ h:mm\ AM/PM;@',
                       12.3456789) == '१२/१/१९०० ८:१७ पूर्वाह्न'
    assert ssfe.format(r'[$-hi-IN,401]d/m/yyyy\ h:mm\ AM/PM;@',
                       12.3456789) == '१२/१/१९०० ८:१७ पूर्वाह्न'
    assert ssfj.format(r'[$-D000409]h:mm\ AM/PM;@', 12.3456789) == '๘:๑๗ AM'
    assert ssfe.format(r'[$-,D00]h:mm\ AM/PM;@', 12.3456789) == '๘:๑๗ AM'

    ssfex = SSF(locale='en-US',
                decimal_separator='!!',
                thousands_separator='@')
    assert ssfex.format('#,###.00', 1000000) == '1@000@000!!00'
    assert ssfex.format('#,###.00', 1000000, locale='de-DE') == '1.000.000,00'
    assert ssfex.format('#,###.00',
                        1000000,
                        locale='de-DE',
                        decimal_separator='inherit',
                        thousands_separator='inherit') == '1@000@000!!00'
    assert ssfex.format('#,###.00', 1000000, width=13) == '1@000@000!!00'
    assert ssfex.format('#,###.00', 1000000, width=12) == '#' * 12
Esempio n. 13
0
def test_alternate_calendars_3():
    ssff = SSF(locale='fr-FR', errors='raise')

    # Lunar 0E

    # Non leap year:
    assert ssff.format('[$-E0009]dddd,ddd,mmmm,mmm,mmmmm,m/d/yyyy',
                       43659) == '土曜日,土,六月,六月,六,6/11/2019'
    assert ssff.format('[$-E0001]dddd,ddd,mmmm,mmm,mmmmm,m',
                       43840) == 'Friday,Fri,December,Dec,D,12'
    assert ssff.format('[$-E0001]dddd,ddd,mmmm,mmm,mmmmm,m',
                       43869) == 'Saturday,Sat,January,Jan,J,1'
    assert ssff.format('[$-1B0E0411]dddd mmmm d, yyyy',
                       43659) == '土曜日 六月 十一, 二〇一九'
    # Leap year:
    assert ssff.format('[$-E0009]dddd mmm dd, yyyy',
                       43856) == '日曜日 正月 02, 2020'
    assert ssff.format('[$-1E0E0404]dddd,ddd,mmmm,mmm,mmmmm,m-d-yyyy',
                       44190) == '金曜日,金,十二月,十二月,十,十二-十一-二○二○'  #12th month
    assert ssff.format('[$-1E0E0404]dddd,ddd,mmmm,mmm,mmmmm,m-d-yyyy',
                       44219) == '土曜日,土,十二月,十二月,十,十三-十一-二○二○'  #13th month

    # Lunar 11

    # Non leap year:
    assert ssff.format('[$-110001]ddd mmm d yyyy', 43840) == 'Fri Dec 16 2019'
    assert ssff.format('[$-110001]ddd mmm d yyyy', 43869) == 'Sat Jan 15 2020'
    # Leap year:
    assert ssff.format('[$-11FC23]mm-dd-yyyy', 44190) == '12-11-2020'
    assert ssff.format('[$-11FC23]mm-dd-yyyy', 44219) == '13-11-2020'

    # Lunar 12

    # Non leap year:
    assert ssff.format('[$-120010]yyyy-mm-dd', 43840) == '2019-12-16'
    assert ssff.format('[$-120010]yyyy-mm-dd', 43869) == '2020-01-15'
    # Leap year:
    assert ssff.format('[$-1E127804]yyyy mm dd',
                       44190) == '二○二○ 十二 十一'  #12th month
    assert ssff.format('[$-1E127804]yyyy mm dd',
                       44219) == '二○二○ 十三 十一'  #13th month
Esempio n. 14
0
def test_alternate_calendars_2():
    ssff = SSF(locale='fr-FR', errors='raise')

    # Thai Buddhist - 07

    assert ssff.format('[$-7000C]dddd mmmm d, yyyy',
                       44169) == 'ศุกร์ ธันวาคม 4, 2563'
    assert ssff.format('[$-0D07000C]dddd mmmm d, yyyy',
                       44169) == 'ศุกร์ ธันวาคม ๔, ๒๕๖๓'
    assert ssff.format('[$-0D07000C]dddd mmmm d, yyyy',
                       44200) == 'จันทร์ มกราคม ๔, ๒๕๖๔'

    # Jewish - 08 and 08_leap

    # Non leap year:
    assert ssff.format('[$-80009]dddd mmm d, yyyy',
                       43836) == 'Yom Sheni Tevet 9, 5780'
    assert ssff.format('[$-24080012]dddd mmm d, yyyy',
                       43894) == "Yom Revi'i Adar 八, 五七八0"
    assert ssff.format('[$-8000D]dddd,ddd,mmmm,mmm,mmmmm,m d yy',
                       43865) == 'יום שלישי,ג,שבט,שבט,שבט,5 9 80'
    assert ssff.format('[$-80402]dddd mmmm d, yyyy',
                       43923) == 'Yom Chamishi Nisan 8, 5780'
    assert ssff.format('[$-8008C]dddd mmm d, yyyy',
                       44111) == "Yom Revi'i Tishrei 19, 5781"
    # Leap year:
    assert ssff.format('[$-8000D]dddd mmmm d, yyyy',
                       44571) == 'יום שני שבט 8, 5782'
    assert ssff.format('[$-8000C]dddd mmmm d, yyyy',
                       44600) == 'Yom Shlishi AdarI 7, 5782'  # Leap month
    assert ssff.format('[$-8000C]dddd mmmm m/d/yy',
                       44629) == "Yom Revi'i AdarII 7/6/82"
    assert ssff.format('[$-8000A]dddd mmm mm/dd/yyyy',
                       44817) == 'Yom Shlishi Elul 13/17/5782'  # 13th month
    assert ssff.format(
        '[$-82C09]dddd mmmm yyyy-mm-dd',
        44846) == "Yom Revi'i Tishrei 5783-01-17"  # Wrap-around to month 1

    # Gregorian French - 09
    assert ssff.format('[$-90409]dddd mmmm d, yyyy',
                       43865) == 'mardi février 4, 2020'

    # Gregorian Arabic - 0A
    assert ssff.format('[$-A000C]dddd mmmm yyyy-mm-dd',
                       43836) == 'الإثنين كانون الثاني 2020-01-06'
    assert ssff.format('[$-AFC23]dddd,ddd,mmmm,mmm,mmmmm,m',
                       44169) == 'الجمعة,الجمعة,كانون الأول,كانون الأول,ك,12'

    # Gregorian Transliterated English - 0B

    assert ssff.format('[$-B0009]dddd mmmm d, yyyy',
                       43836) == 'الإثنين يناير 6, 2020'

    # Gregorian Transliterated French - 0C

    assert ssff.format('[$-240C0012]dddd,ddd,mmmm,mmm,mmmmm,m-d-yyyy',
                       43952) == 'الجمعة,الجمعة,مايو,مايو,م,五-一-二0二0'
Esempio n. 15
0
def test_alternate_calendars_1():
    ssff = SSF(locale='fr-FR', errors='raise')

    # Gregorian Calendar - United States - 02: Everything's in English
    assert ssff.format('[$-2040c]dddd mmmm d, yyyy',
                       43836) == 'Monday January 6, 2020'

    # Japanese (era) calendar 03
    assert ssff.format('[$-30091]dddd mmmm d, yyyy ge',
                       43836) == 'Monday January 6, 2 R2'
    assert ssff.format('[$-30091]g gg ggg e', 43865) == 'R 令 令和 2'
    assert ssff.format('[$-30091]b2g gg ggg e', 43865) == 'R 令 令和 2'

    # Taiwan Calendar 04
    assert ssff.format('[$-40001]ddd mmm d, yyyy', 43923) == 'Thu Apr 2, 2020'
    assert ssff.format('[$-4040C]dddd mmm d, yyyy', 43894) == '星期三 三月 4, 2020'

    # Korean Calendar 05
    assert ssff.format('[$-24050012]dddd mmm d, yyyy',
                       43952) == '금요일 5 一, 四三五三'
    assert ssff.format('[$-50009]m/d/yyyy', 43836) == '1/6/4353'

    # Hijri - Arab Lunar Calendar 06
    assert ssff.format('[$-60009]dddd,ddd,mmmm,mmm,mmmmm,m',
                       43894) == "AlArbia'a,AlArbia'a,Rajab,Rajab,R,7"
    assert ssff.format('[$-60402]dddd,ddd,mmmm,mmm,mmmmm,m',
                       43952) == 'AlJumaa,AlJumaa,Ramadan,Ramadan,R,9'
    assert ssff.format(
        '[$-6040C]dddd mmm d, yyyy', 44053
    ) == 'lundi Zoul Hijjah 20, 1441'  # Excel gives 21 for this one, but all online converters give 20!
Esempio n. 16
0
        elif 'thousands' in key:
            thousands_sep = True
        elif 'negative' in key:
            negative = form.getfirst(key, default=None)
        elif 'positive' in key:
            positive_sign_exponent = True
    result = ssf.get_format(type=getfmt,
                            places=places,
                            use_thousands_separator=thousands_sep,
                            negative_numbers=negative,
                            positive_sign_exponent=positive_sign_exponent,
                            locale=locale)
else:
    fmt = form.getfirst('fmt', '')
    val = form.getfirst('val', '')
    try:
        val = float(val)
    except Exception:
        pass

    width = form.getfirst('width', default=None)
    if width is not None and width.isdigit():
        width = int(width)
    else:
        width = None
    result = ssf.format(fmt, val, width=width, locale=locale)

print("Content-Type: text/plain; charset=UTF-8")
print()
print(quote(result))
Esempio n. 17
0
def test_code_coverage1():
    """Tests to improve code coverage."""

    # normalize_locale
    assert ssf.format('#,###', 1000, locale='de-DE.extra') == '1.000'
    assert ssf.format('#,###', 1000, locale='de-DE@extra') == '1.000'

    # commaify
    ssfn = SSF(locale_support=False)
    assert ssfn.format('?,???,???', 1000) == '   1,000'
    assert ssfn.format('#,###', 1) == '1'

    # parse_date_code
    assert ssf.format('[hh]', -1 + 0.00001 / 86400) == '-24'

    # general_fmt
    assert ssf.format('General', True) == 'TRUE'
    assert ssf.format('General', False) == 'FALSE'
    assert ssf.format('General', True, align='left', width=6) == 'TRUE  '
    assert ssf.format('General', False, align='left', width=9) == 'FALSE    '
    assert ssf.format('General', True, align='right', width=6) == '  TRUE'
    assert ssf.format('General', False, align='right', width=9) == '    FALSE'

    assert ssf.format('General', timedelta(days=1)) == '1'
    assert ssf.format('General', None) == ''
    assert ssf.format('General', None, width=2) == '  '
    assert ssf.format('General', time(12, 0, 0)) == '1/0/1900'
    assert ssf.format('@', time(12, 0, 0)) == '0.5'
    try:
        actual = ssf.format('General', object())
        assert 'object object at' in actual
    except ValueError as e:  # Can't really get here
        assert 'unsupported value' in str(e)

    # write_date
    assert ssf.format('s', 0) == '0'
    assert ssf.format('s', 1 / 86400) == '1'

    # write_num_exp
    assert ssf.format('###.00E+0', 0) == '000.00E+0'
    assert ssf.format('###.00E+0', 0.0) == '000.00E+0'
    assert ssf.format('###.00E+0', 1.2E-4) == '120.00E-6'

    # write_num_f2
    assert ssf.format('# ?/2', 1) == '1    '
    assert ssf.format('?/2', 1) == '2/2'
    assert ssf.format('?/?', 1) == '1/1'
    assert ssf.format('?/?', 2) == '2/1'

    # write_num_flt / int
    assert ssf.format(r'(###) ###\-####', 2125551212.01) == '(212) 555-1212'
    assert ssf.format(r'(###) ###\-####', 2125551212) == '(212) 555-1212'
    assert ssf.format('00000-0000', 5270101.01) == '00527-0101'
    assert ssf.format('00000-0000', 5270101) == '00527-0101'
    assert ssf.format('0', True) == 'TRUE'
    assert ssf.format('0', False) == 'FALSE'

    # _eval_fmt
    try:
        ssf.format('0"a', 0)
        assert False  # Failed to catch error
    except ValueError as e:
        assert 'unterminated string' in str(e)

    assert ssf.format('b1', -1) == '##########'

    try:
        ssf.format('[red', 0)
        assert False  # Failed to catch error
    except ValueError as e:
        assert 'unterminated' in str(e)

    try:
        ssf.format('[$-12345678]0.00E+00', -1.23E+45)
    except ValueError as e:
        assert 'Cannot handle' in str(e)

    assert ssf.format('[ss]', datetime(9999, 12, 31, 23, 59, 59,
                                       999999)) == '##########'
Esempio n. 18
0
def test_issue_12():
    ssfa = SSF(locale='ar', errors='raise')
    assert ssfa.format('Short Date', 3.14159) == '03\u200f/1\u200f/00'
Esempio n. 19
0
def test_code_coverage2():
    # _replace_numbers
    assert ssf.format('[$-1E000000]0.00E+00', -1.23E+45) == '-一.二三五百四五'
    assert ssf.format('[$-1E000000]0.00E+00', -1.23E-45) == '-一.二三五万四五'

    # _get_locale
    ssfi = SSF(errors='ignore')
    assert ssfi.format('#,###,###.##', 1000.1,
                       locale='deDE') == '1,000.1'  # Bad locale - ignored

    try:
        ssf.format('#,###,###.##', 1000.1, locale='deDE')
        assert False  # failed
    except Exception as e:
        assert 'Locale' in str(e)

    # format
    ssfe = SSF(locale='deDE', errors='pounds')
    assert ssfe.format('0', 0) == '##########'

    assert ssf.format(
        1024, 1025) == '1025'  # Incorrect format number defaults to General

    ssfp = SSF(errors='#')
    assert ssfp.format('[red', 0) == '##########'

    # SSF_CALENDAR

    try:
        ssf.format('[$-7F0000]yyyy', 100)
        assert False
    except ValueError:
        pass

    # _escape_dots

    assert ssf.format(r'[Red]\x"abc"0.0.0.0', 1234.567) == 'xabc1234.5.6.7'

    # set_day_names

    try:
        ssf.set_day_names(['Monday', 'Tuesday'])
        assert False  # Failed
    except ValueError:
        pass

    try:
        ssf.set_day_names(["1", "2", "3", "4", "5", "6", "7"])
        assert False  # Failed
    except ValueError:
        pass

    try:
        ssf.set_day_names([1, 2, 3, 4, 5, 6, 7])
        assert False  # Failed
    except ValueError:
        pass

    try:
        ssf.set_day_names([(1, 1), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6),
                           (7, 7)])
        assert False  # Failed
    except ValueError:
        pass

    # set_month_names

    try:
        ssf.set_month_names(['Jan', 'Feb'])
        assert False  # Failed
    except ValueError:
        pass

    try:
        ssf.set_month_names([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12])
        assert False  # Failed
    except ValueError:
        pass

    try:
        ssf.set_month_names([
            0, ("J", "Jan"), ("F", "Feb"), ("M", "Mar"), ("A", "Apr"),
            ("M", "May"), ("J", "Jun"), ("J", "Jul"), ("A", "Aug"),
            ("S", "Sep"), ("O", "Oct"), ("N", "Nov"), ("D", "Dec")
        ])  # Missing the long version
        assert False  # Failed
    except ValueError:
        pass

    try:
        ssf.set_month_names([
            0, (1, 1, 1), (2, 2, 2), (3, 3, 3), (4, 4, 4), (5, 5, 5),
            (6, 6, 6), (7, 7, 7), (8, 8, 8), (9, 9, 9), (10, 10, 10),
            (11, 11, 11), (12, 12, 12)
        ])
        assert False  # Failed
    except ValueError:
        pass