#!/usr/bin/env 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

