#!/bin/bash

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

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

# 'dd' command, stderr prints redirecting to /dev/null
opt="2>/dev/null"

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

# Test suffixed number parsing; `count` is representative.
testing "count=2" "dd if=input count=2 ibs=1 $opt" "hi" "high\n" ""
testing "count= 2" "dd if=input 'count= 2' ibs=1 $opt" "hi" "high\n" ""
testing "count=0x2" "dd if=input 'count=0x2' ibs=1 $opt" "hi" "high\n" ""
testing "count=-2" "dd if=input 'count=-2' ibs=1 2>&1" "dd: invalid number '-2'\n" "" ""

testing "if=(file)" "dd if=input $opt" "I WANT\n" "I WANT\n" ""
testing "of=(file)" "dd of=file $opt && cat file" "I WANT\n" "" "I WANT\n"
testing "if=file of=file" "dd if=input of=foo $opt && cat foo && rm -f foo" \
  "I WANT\n" "I WANT\n" ""
testing "if=file | dd of=file" "dd if=input $opt | dd of=foo $opt &&
   cat foo && rm -f foo" "I WANT\n" "I WANT\n" ""
testing "(stdout)" "dd $opt" "I WANT\n" "" "I WANT\n"
testing "sync,noerror" \
  "dd if=input of=outFile seek=8860 bs=1M conv=sync,noerror $opt &&
   stat -c \"%s\" outFile && rm -f outFile" "9291431936\n" "I WANT\n" ""
testing "if=file of=(null)" \
  "dd if=input of=/dev/null $opt && echo 'yes'" "yes\n" "I WANT\n" ""
testing "with if of bs" \
  "dd if=/dev/zero of=sda.txt bs=512 count=1 $opt &&
   stat -c '%s' sda.txt && rm -f sda.txt" "512\n" "" ""
testing "with if of ibs obs" \
  "dd if=/dev/zero of=sda.txt ibs=512 obs=256 count=1 $opt &&
   stat -c '%s' sda.txt && rm -f sda.txt" "512\n" "" ""
testing "with if of ibs obs count" \
  "dd if=/dev/zero of=sda.txt ibs=512 obs=256 count=3 $opt &&
   stat -c '%s' sda.txt && rm -f sda.txt" "1536\n" "" ""

ln -s input softlink
testing "if=softlink" "dd if=softlink $opt" "I WANT\n" "I WANT\n" ""
unlink softlink

ln -s file softlink
testing "if=file of=softlink" "dd if=input of=softlink $opt &&
   [ -f file -a -L softlink ] && cat softlink" "I WANT\n" "I WANT\n" ""
unlink softlink && rm -f file

testing "if=file of=file (same file)" "dd if=input of=input $opt &&
   [ -f input ] && cat input && echo 'yes'" "yes\n" "I WANT\n" ""
testing "same file notrunc" \
  "dd if=input of=input conv=notrunc $opt && cat input" \
  "I WANT\n" "I WANT\n" ""

testing "with ibs obs bs" "dd ibs=2 obs=5 bs=9 $opt" "I WANT\n" "" "I WANT\n"
testing "with ibs obs bs if" "dd ibs=2 obs=5 bs=9 if=input $opt" \
  "I WANT\n" "I WANT\n" ""

testing "with ibs obs count" "dd ibs=1 obs=1 count=1 $opt" "I" "" "I WANT\n"
testing "with ibs obs count if" "dd ibs=1 obs=1 count=3 if=input $opt" \
  "I W" "I WANT\n" ""

testing "with count" "dd count=1 $opt" "I WANT\n" "" "I WANT\n"
testing "with count if" "dd count=1 if=input $opt" "I WANT\n" "I WANT\n" ""

testing "with skip" "dd skip=0 $opt" "I WANT\n" "" "I WANT\n"
testing "with skip if" "dd skip=0 if=input $opt" "I WANT\n" "I WANT\n" ""

testing "with seek" "dd seek=0 $opt" "I WANT\n" "" "I WANT\n"
testing "with seek if" "dd seek=0 if=input $opt" "I WANT\n" "I WANT\n" ""

# Testing only 'notrunc', 'noerror', 'fsync', 'sync'

testing "conv=notrunc" "dd conv=notrunc $opt" "I WANT\n" "" "I WANT\n"
testing "conv=notrunc with IF" "dd conv=notrunc if=input $opt" "I WANT\n" \
  "I WANT\n" ""

testing "conv=noerror" "dd conv=noerror $opt" "I WANT\n" "" "I WANT\n"
testing "conv=noerror with IF" "dd conv=noerror if=input $opt" "I WANT\n" \
  "I WANT\n" ""

testing "conv=fsync" "dd conv=fsync $opt" "I WANT\n" "" "I WANT\n"
testing "conv=fsync with IF" "dd conv=fsync if=input $opt" "I WANT\n" \
  "I WANT\n" ""

testing "conv=sync" "dd conv=sync $opt | head -n 1" "I WANT\n" "" "I WANT\n"
testing "conv=sync with IF" "dd conv=sync if=input $opt | head -n 1" "I WANT\n" \
  "I WANT\n" ""

# status=noxfer|none
testing "status=noxfer" "dd if=input status=noxfer ibs=1 2>&1" "input\n6+0 records in\n0+1 records out\n" "input\n" ""
testing "status=none" "dd if=input status=none ibs=1 2>&1" "input\n" "input\n" ""
