#!/bin/bash

# Copyright 2013 Robin Mittal <robinmittal.it@gmail.com>
# Copyright 2013 Divya Kothari <divya.s.kothari@gmail.com>
# Copyright 2013  Kyungwan.Han <asura321@gmail.com>

[ -f testing.sh ] && . testing.sh

#testing "name" "command" "result" "infile" "stdin"

# Creating test file for testing cut
echo "one:two:three:four:five:six:seven
alpha:beta:gamma:delta:epsilon:zeta:eta:theta:iota:kappa:lambda:mu
the quick brown fox jumps over the lazy dog" >abc.txt

testing "-b a,a,a" "cut -b 3,3,3 abc.txt" "e\np\ne\n" "" ""
testing "-b overlaps" "cut -b 1-3,2-5,7-9,9-10 abc.txt" \
  "one:to:th\nalphabeta\nthe qick \n" "" ""
testing "-b encapsulated" "cut -b 3-8,4-6 abc.txt" "e:two:\npha:be\ne quic\n" \
  "" ""
testing "-bO overlaps" \
  "cut --output-delimiter ' ' -b 1-3,2-5,7-9,9-10 abc.txt" \
  "one:t o:th\nalpha beta\nthe q ick \n" "" ""
testing "high-low error" "cut -b 8-3 abc.txt 2>/dev/null || echo err" "err\n" \
  "" ""

testing "-c a-b" "cut -c 4-10 abc.txt" ":two:th\nha:beta\n quick \n" "" ""
testing "-c a-" "cut -c 41- abc.txt" "\ntheta:iota:kappa:lambda:mu\ndog\n" "" ""
testing "-c -b" "cut -c -39 abc.txt" \
  "one:two:three:four:five:six:seven\nalpha:beta:gamma:delta:epsilon:zeta:eta\nthe quick brown fox jumps over the lazy\n" \
  "" ""
testing "-c a" "cut -c 40 abc.txt" "\n:\n \n" "" ""
testing "-c a,b-c,d" "cut -c 3,5-7,10 abc.txt" "etwoh\npa:ba\nequi \n" "" ""
toyonly testing "-c japan.txt" 'cut -c 3-6,9-12 "$FILES/utf8/japan.txt"' \
  "ガラスをられます\n" "" ""

toyonly testing "-C test1.txt" 'cut -C -1 "$FILES/utf8/test1.txt"' \
  "l̴̗̞̠\n" "" ""

# substitute for awk
toyonly testcmd "-DF" "-DF 2,7,5" \
  "said and your\nare\nis demand. supply\nforecast :\nyou you better,\n\nEm: Took hate\n" "" \
"Bother, said Pooh. It's your husband, and he has a gun.
Cheerios are donut seeds.
Talk is cheap because supply exceeds demand.
Weather forecast for tonight : dark.
Apple: you can buy better, but you can't pay more.
Subcalifragilisticexpialidocious.
Auntie Em: Hate you, hate Kansas. Took the dog. Dorothy."

testcmd "empty field" "-d ':' -f 1-3" "a::b\n" "" "a::b\n"
testcmd "empty field 2" "-d ':' -f 3-5" "b::c\n" "" "a::b::c:d\n"

testing "-f a-" "cut -d ':' -f 5- abc.txt" "five:six:seven\nepsilon:zeta:eta:theta:iota:kappa:lambda:mu\nthe quick brown fox jumps over the lazy dog\n" "" ""

testing "show whole line with no delim" "cut -d ' ' -f 3 abc.txt" \
	"one:two:three:four:five:six:seven\nalpha:beta:gamma:delta:epsilon:zeta:eta:theta:iota:kappa:lambda:mu\nbrown\n" "" ""

testing "with echo, -c (a-b)" "echo 'ref_categorie=test' | cut -c 1-15 " "ref_categorie=t\n" "" ""
testing "with echo, -c (a)" "echo 'ref_categorie=test' | cut -c 14" "=\n" "" ""

# Modifying abc.txt data as per new testcase
echo "abcdefghijklmnopqrstuvwxyz" >abc.txt

testing "with -c (a,b,c)" "cut -c 4,5,20 abc.txt" "det\n" "" ""

testing "with -b (a,b,c)" "cut -b 4,5,20 abc.txt" "det\n" "" ""

# Modifying abc.txt data as per testcase
echo "406378:Sales:Itorre:Jan
031762:Marketing:Nasium:Jim
636496:Research:Ancholie:Mel
396082:Sales:Jucacion:Ed" >abc.txt

testing "with -d -f(:) -s" "cut -d: -f3 -s abc.txt" "Itorre\nNasium\nAncholie\nJucacion\n" "" ""

testing "with -d -f( ) -s" "cut -d' ' -f3 -s abc.txt && echo yes" "yes\n" "" ""

testing "with -d -f(a) -s" "cut -da -f3 -s abc.txt" "n\nsium:Jim\n\ncion:Ed\n" "" ""

testing "with -d -f(a) -s -n" "cut -da -f3 -s -n abc.txt" "n\nsium:Jim\n\ncion:Ed\n" "" ""

# Removing abc.txt file for cleanup purpose
rm abc.txt
