mirror of
https://github.com/clearlinux/dockerfiles.git
synced 2026-09-07 22:21:45 +00:00
add python unit test
This commit is contained in:
@@ -0,0 +1,140 @@
|
||||
#!/usr/bin/python -tt
|
||||
# Copyright 2010 Google Inc.
|
||||
# Licensed under the Apache License, Version 2.0
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
# Google's Python Class
|
||||
# http://code.google.com/edu/languages/google-python-class/
|
||||
|
||||
# Basic string exercises
|
||||
# Fill in the code for the functions below. main() is already set up
|
||||
# to call the functions with a few different inputs,
|
||||
# printing 'OK' when each function is correct.
|
||||
# The starter code for each function includes a 'return'
|
||||
# which is just a placeholder for your code.
|
||||
# It's ok if you do not complete all the functions, and there
|
||||
# are some additional functions to try in string2.py.
|
||||
|
||||
|
||||
# A. donuts
|
||||
# Given an int count of a number of donuts, return a string
|
||||
# of the form 'Number of donuts: <count>', where <count> is the number
|
||||
# passed in. However, if the count is 10 or more, then use the word 'many'
|
||||
# instead of the actual count.
|
||||
# So donuts(5) returns 'Number of donuts: 5'
|
||||
# and donuts(23) returns 'Number of donuts: many'
|
||||
def donuts(count):
|
||||
# +++your code here+++
|
||||
# LAB(begin solution)
|
||||
if count < 10:
|
||||
return 'Number of donuts: ' + str(count)
|
||||
else:
|
||||
return 'Number of donuts: many'
|
||||
# LAB(replace solution)
|
||||
# return
|
||||
# LAB(end solution)
|
||||
|
||||
|
||||
# B. both_ends
|
||||
# Given a string s, return a string made of the first 2
|
||||
# and the last 2 chars of the original string,
|
||||
# so 'spring' yields 'spng'. However, if the string length
|
||||
# is less than 2, return instead the empty string.
|
||||
def both_ends(s):
|
||||
# +++your code here+++
|
||||
# LAB(begin solution)
|
||||
if len(s) < 2:
|
||||
return ''
|
||||
first2 = s[0:2]
|
||||
last2 = s[-2:]
|
||||
return first2 + last2
|
||||
# LAB(replace solution)
|
||||
# return
|
||||
# LAB(end solution)
|
||||
|
||||
|
||||
# C. fix_start
|
||||
# Given a string s, return a string
|
||||
# where all occurences of its first char have
|
||||
# been changed to '*', except do not change
|
||||
# the first char itself.
|
||||
# e.g. 'babble' yields 'ba**le'
|
||||
# Assume that the string is length 1 or more.
|
||||
# Hint: s.replace(stra, strb) returns a version of string s
|
||||
# where all instances of stra have been replaced by strb.
|
||||
def fix_start(s):
|
||||
# +++your code here+++
|
||||
# LAB(begin solution)
|
||||
front = s[0]
|
||||
back = s[1:]
|
||||
fixed_back = back.replace(front, '*')
|
||||
return front + fixed_back
|
||||
# LAB(replace solution)
|
||||
# return
|
||||
# LAB(end solution)
|
||||
|
||||
|
||||
# D. MixUp
|
||||
# Given strings a and b, return a single string with a and b separated
|
||||
# by a space '<a> <b>', except swap the first 2 chars of each string.
|
||||
# e.g.
|
||||
# 'mix', pod' -> 'pox mid'
|
||||
# 'dog', 'dinner' -> 'dig donner'
|
||||
# Assume a and b are length 2 or more.
|
||||
def mix_up(a, b):
|
||||
# +++your code here+++
|
||||
# LAB(begin solution)
|
||||
a_swapped = b[:2] + a[2:]
|
||||
b_swapped = a[:2] + b[2:]
|
||||
return a_swapped + ' ' + b_swapped
|
||||
# LAB(replace solution)
|
||||
# return
|
||||
# LAB(end solution)
|
||||
|
||||
|
||||
# Provided simple test() function used in main() to print
|
||||
# what each function returns vs. what it's supposed to return.
|
||||
def test(got, expected):
|
||||
if got == expected:
|
||||
prefix = ' OK '
|
||||
else:
|
||||
prefix = ' X '
|
||||
print(('%s got: %s expected: %s' % (prefix, repr(got), repr(expected))))
|
||||
|
||||
|
||||
# Provided main() calls the above functions with interesting inputs,
|
||||
# using test() to check if each result is correct or not.
|
||||
def main():
|
||||
print('donuts')
|
||||
# Each line calls donuts, compares its result to the expected for that call.
|
||||
test(donuts(4), 'Number of donuts: 4')
|
||||
test(donuts(9), 'Number of donuts: 9')
|
||||
test(donuts(10), 'Number of donuts: many')
|
||||
test(donuts(99), 'Number of donuts: many')
|
||||
|
||||
print()
|
||||
print('both_ends')
|
||||
test(both_ends('spring'), 'spng')
|
||||
test(both_ends('Hello'), 'Helo')
|
||||
test(both_ends('a'), '')
|
||||
test(both_ends('xyz'), 'xyyz')
|
||||
|
||||
|
||||
print()
|
||||
print('fix_start')
|
||||
test(fix_start('babble'), 'ba**le')
|
||||
test(fix_start('aardvark'), 'a*rdv*rk')
|
||||
test(fix_start('google'), 'goo*le')
|
||||
test(fix_start('donut'), 'donut')
|
||||
|
||||
print()
|
||||
print('mix_up')
|
||||
test(mix_up('mix', 'pod'), 'pox mid')
|
||||
test(mix_up('dog', 'dinner'), 'dig donner')
|
||||
test(mix_up('gnash', 'sport'), 'spash gnort')
|
||||
test(mix_up('pezzy', 'firm'), 'fizzy perm')
|
||||
|
||||
|
||||
# Standard boilerplate to call the main() function.
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Reference in New Issue
Block a user