#!/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" ""
toyonly 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>/dev/null || echo errored" "errored\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" ""
