1#!/bin/bash 2# The MCLinker project 3# 4# This file is distributed under the University of Illinois Open Source 5# License. See LICENSE.TXT for details. 6 7function ask_filename 8{ 9 echo -n "What is the class you what to test for? "; 10} 11 12function ask_brief 13{ 14 CLASS_NAME=$1 15 echo "Please brief the testcase (optional):" 16} 17 18function copy_template_header 19{ 20 local NAME=$1 21 local DEPLOYMENT=$2 22 local TARGET_FILE="${MCLINKERTOP}/unittests/${NAME}Test.h"; 23 local SOURCE_FILE="${MCLINKERTOP}/templates/headerTest.h"; 24 cp ${SOURCE_FILE} ${TARGET_FILE} 25 echo "${TARGET_FILE}"; 26} 27 28function copy_template_impl 29{ 30 local NAME=$1 31 local DEPLOYMENT=$2 32 local TARGET_FILE="${MCLINKERTOP}/unittests/${NAME}Test.cpp"; 33 local SOURCE_FILE="${MCLINKERTOP}/templates/implTest.cpp"; 34 cp ${SOURCE_FILE} ${TARGET_FILE} 35 echo "${TARGET_FILE}"; 36} 37 38function replace_author 39{ 40 local TARGET_FILE=$1 41 shift 42 local AUTHOR=$* 43 44 sed "s/\${AUTHOR}/${AUTHOR}/g" ${TARGET_FILE} > ${TARGET_FILE}.tmp 45 mv ${TARGET_FILE}.tmp ${TARGET_FILE} 46} 47 48function repalce_email 49{ 50 local TARGET_FILE=$1 51 local EMAIL=$2 52 sed "s/\${EMAIL}/${EMAIL}/g" ${TARGET_FILE} > ${TARGET_FILE}.tmp 53 54 # adjust the length of header 55 NEW_SPACE=`grep '> *' ${TARGET_FILE}.tmp | wc -c` 56 NEW_SPACE=`expr 79 - ${NEW_SPACE}` 57 ADDEND=">"; 58 if [ "${NEW_SPACE}" -gt "0" ]; then # add space 59 for (( i=0; i<${NEW_SPACE}; i=i+1 )); do 60 ADDEND="${ADDEND} "; 61 done 62 sed "s/${EMAIL}>/${EMAIL}${ADDEND}/" ${TARGET_FILE}.tmp > ${TARGET_FILE} 63 elif [ "${NEW_SPACE}" -lt "0" ]; then # strip space 64 for (( i=${NEW_SPACE}; i<0; i=i+1 )); do 65 ADDEND="${ADDEND} "; 66 done 67 sed "s/${EMAIL}${ADDEND}/${EMAIL}>/g" ${TARGET_FILE}.tmp > ${TARGET_FILE} 68 69 else #do nothing 70 mv ${TARGET_FILE}.tmp ${TARGET_FILE} 71 fi 72 73 rm ${TARGET_FILE}.tmp 74 local EMAIL=$2 75} 76 77function replace_class 78{ 79 local TARGET_FILE=$1 80 local CLASS_NAME=$2 81 local UPCLASS_NAME=`echo ${CLASS_NAME} | tr [:lower:] [:upper:]` 82 83 sed "s/\${class_name}/${CLASS_NAME}/g" ${TARGET_FILE} > ${TARGET_FILE}.tmp 84 sed "s/\${CLASS_NAME}/${UPCLASS_NAME}/g" ${TARGET_FILE}.tmp > ${TARGET_FILE} 85 rm ${TARGET_FILE}.tmp 86} 87 88function replace_brief 89{ 90 local TARGET_FILE=$1 91 shift 92 local BRIEF=$* 93 sed "s/\${brief}/${BRIEF}/g" ${TARGET_FILE} > ${TARGET_FILE}.tmp 94 mv ${TARGET_FILE}.tmp ${TARGET_FILE} 95} 96 97