#!/bin/bash

. ../../nvm.sh

TEST_NODE_VERSION="v0.10.29"

TEST_COUNT=0
TEST_PASSED=0
TEST_FAILED=0

function registerExpectedSymlink() {
  registerResult ${1}
}

function registerExpectedNoSymlink() {
  [ ${1} -ne 0 ]
  registerResult $?
}

function registerResult() {
  result=${1}

  TEST_COUNT=$(($TEST_COUNT + 1))

  [ ${result} -eq 0 ] \
    && TEST_PASSED=$(($TEST_PASSED + 1)) \
    || TEST_FAILED=$(($TEST_FAILED + 1))
}

function cleanup() {
  rm -rf ../../${TEST_NODE_VERSION}
  rm -f ../../current
}

function runNvmUse() {
  mkdir ../../${TEST_NODE_VERSION}
  nvm use ${TEST_NODE_VERSION} > /dev/null 2>&1
  rmdir ../../${TEST_NODE_VERSION}
}

function isCurrentSymlinkPresent() {
  [ -L ../../current ]
}

NVM_SYMLINK_CURRENT=false
cleanup
runNvmUse
isCurrentSymlinkPresent && echo >&2 "Expected 'current' symlink not to be created when NVM_SYMLINK_CURRENT=false!"
registerExpectedNoSymlink $?

NVM_SYMLINK_CURRENT=true
cleanup
runNvmUse
isCurrentSymlinkPresent || echo >&2 "Expected 'current' symlink to be created when NVM_SYMLINK_CURRENT=true!"
registerExpectedSymlink $?

NVM_SYMLINK_CURRENT=garbagevalue
cleanup
runNvmUse
isCurrentSymlinkPresent && echo >&2 "Expected 'current' symlink not to be created when NVM_SYMLINK_CURRENT contains a string!"
registerExpectedNoSymlink $?

NVM_SYMLINK_CURRENT=0
cleanup
runNvmUse
isCurrentSymlinkPresent && echo >&2 "Expected 'current' symlink not to be created when NVM_SYMLINK_CURRENT=0!"
registerExpectedNoSymlink $?

NVM_SYMLINK_CURRENT=1
cleanup
runNvmUse
isCurrentSymlinkPresent && echo >&2 "Expected 'current' symlink not to be created when NVM_SYMLINK_CURRENT=1!"
registerExpectedNoSymlink $?

unset NVM_SYMLINK_CURRENT
cleanup
runNvmUse
isCurrentSymlinkPresent && echo >&2 "Expected 'current' symlink not to be created when NVM_SYMLINK_CURRENT has been unset (default behaviour)!"
registerExpectedNoSymlink $?

cleanup

[ ${TEST_FAILED} -ne 0 ] && echo "${TEST_COUNT} tested, ${TEST_PASSED} passed, ${TEST_FAILED} failed" && exit 1 || true