Пример #1
0
def get_case(field_type, values):
    """ Determines the case of a list or dictionary of values.
        Args:
          - type:    if not == 'string', will return 'n/a'
          - values:  could be either dictionary or list.  If it's a list, then
                     it will only examine the keys.
        Returns:
          - one of:  'mixed','lower','upper','unknown'
        Misc notes:
          - "unknown values" are ignored
          - empty values list/dict results in 'unknown' result
        To do:
          - add consistency factor
        Test coverage:
          - complete, via test harness
    """
    freq = collections.defaultdict(int)
    case = None

    if field_type != 'string':
        return 'n/a'

    # count occurances of each case field_type in values:
    for key in values:
        if typer.is_unknown(key):
            freq['unk']    += 1
        elif typer.is_integer(key):     # will be ignoring these
            freq['number'] += 1
        elif typer.is_float(key):       # will be ignoring these
            freq['number'] += 1
        elif key.islower():
            freq['lower'] += 1
        elif key.isupper():
            freq['upper'] += 1
        else:
            freq['mixed'] += 1

    # evaluate frequency distribution:
    if 'mixed' in freq:
        case = 'mixed'
    elif ('lower' in freq and 'upper' not in freq):
        case = 'lower'
    elif ('lower' not in freq and 'upper' in freq):
        case = 'upper'
    elif ('lower' in freq and 'upper' in freq):
        case = 'mixed'
    else:
        case = 'unknown'

    return case
Пример #2
0
def get_case(field_type, values):
    """ Determines the case of a list or dictionary of values.
        Args:
          - type:    if not == 'string', will return 'n/a'
          - values:  could be either dictionary or list.  If it's a list, then
                     it will only examine the keys.
        Returns:
          - one of:  'mixed','lower','upper','unknown'
        Misc notes:
          - "unknown values" are ignored
          - empty values list/dict results in 'unknown' result
        To do:
          - add consistency factor
        Test coverage:
          - complete, via test harness
    """
    freq = collections.defaultdict(int)
    case = None

    if field_type != 'string':
        return 'n/a'

    # count occurances of each case field_type in values:
    for key in values:
        if typer.is_unknown(key):
            freq['unk'] += 1
        elif typer.is_integer(key):  # will be ignoring these
            freq['number'] += 1
        elif typer.is_float(key):  # will be ignoring these
            freq['number'] += 1
        elif key.islower():
            freq['lower'] += 1
        elif key.isupper():
            freq['upper'] += 1
        else:
            freq['mixed'] += 1

    # evaluate frequency distribution:
    if 'mixed' in freq:
        case = 'mixed'
Пример #3
0
 def test_type_b01_is_float(self):
     assert(mod.is_float('33.22')     is True)
     assert(mod.is_float(44.55)       is True)
     assert(mod.is_float(3)           is False)
     assert(mod.is_float(0.0)         is False)
     assert(mod.is_float(0)           is False)
     assert(mod.is_float('b')         is False)
     assert(mod.is_float('')          is False)
     assert(mod.is_float(' ')         is False)
     assert(mod.is_float('$3')        is False)
     assert(mod.is_float('4,333.22')  is False)
     assert(mod.is_float('3')         is False)
     assert(mod.is_float('-3')        is False)
     assert(mod.is_float(None)        is False)
Пример #4
0
 def test_type_b01_is_float(self):
     assert (mod.is_float('33.22') is True)
     assert (mod.is_float(44.55) is True)
     assert (mod.is_float(3) is False)
     assert (mod.is_float(0.0) is False)
     assert (mod.is_float(0) is False)
     assert (mod.is_float('b') is False)
     assert (mod.is_float('') is False)
     assert (mod.is_float(' ') is False)
     assert (mod.is_float('$3') is False)
     assert (mod.is_float('4,333.22') is False)
     assert (mod.is_float('3') is False)
     assert (mod.is_float('-3') is False)
     assert (mod.is_float(None) is False)
Пример #5
0
 def test_is_float_basics(self):
     assert mod.is_float('33.22')
     assert mod.is_float(44.55)
     assert mod.is_float(3)           is False
     assert mod.is_float(0.0)         is False
     assert mod.is_float(0)           is False
     assert mod.is_float('b')         is False
     assert mod.is_float('')          is False
     assert mod.is_float(' ')         is False
     assert mod.is_float('$3')        is False
     assert mod.is_float('4,333.22')  is False
     assert mod.is_float('3')         is False
     assert mod.is_float('-3')        is False
     assert mod.is_float(None)        is False
Пример #6
0
 def test_is_float_basics(self):
     assert mod.is_float("33.22")
     assert mod.is_float(44.55)
     assert mod.is_float(3) is False
     assert mod.is_float(0.0) is False
     assert mod.is_float(0) is False
     assert mod.is_float("b") is False
     assert mod.is_float("") is False
     assert mod.is_float(" ") is False
     assert mod.is_float("$3") is False
     assert mod.is_float("4,333.22") is False
     assert mod.is_float("3") is False
     assert mod.is_float("-3") is False
     assert mod.is_float(None) is False