#!/usr/bin/env bash

source ./test/setup
initialize_rvm

__rvm_gems_clear # Clear out any selected gemset.

validate_select() {
  assert match "$valid_string\$" "$rvm_ruby_home"
  assert match $(__btu_db "test/rubies/$valid_string" "gem_home") $rvm_ruby_gem_home
  assert match "${valid_string}\$" $rvm_ruby_home
  assert match "$(echo $valid_string | awk -F'-' '{print $1"/"$2}')" $rvm_ruby_gem_home
  assert match "${valid_string}\$" $rvm_ruby_string
  assert match "${valid_string}\$" $rvm_log_path/$rvm_ruby_string
  assert match "${valid_string}\$" $rvm_ruby_package_name
  assert match "src/${valid_string}\$" $rvm_ruby_src_path
  assert match "$valid_string/bin/ruby" $rvm_ruby_binary
  assert match "$valid_string/.irbrc" $rvm_ruby_irbrc
  assert match "${rvm_ruby_string}" $rvm_ruby_gem_home
}

for valid_string in $(echo $rubies) ; do
  heat "rvm_ruby_string='$valid_string' ; __rvm_select"
  validate_select
done

rvm_ruby_string="1.8.5"         ; valid_string="ruby-1.8.5-p231"    ; heat "rvm_ruby_string=$rvm_ruby_string ; __rvm_select" ; validate_select
rvm_ruby_string="1.8.5-tv1_8_5" ; valid_string="ruby-1.8.5-tv1_8_5" ; heat "rvm_ruby_string=$rvm_ruby_string ; __rvm_select" ; validate_select
rvm_ruby_string="ruby-1.8.5"    ; valid_string="ruby-1.8.5-p231"    ; heat "rvm_ruby_string=$rvm_ruby_string ; __rvm_select" ; validate_select
rvm_ruby_string="1.8.6"         ; valid_string="ruby-1.8.6-p383"    ; heat "rvm_ruby_string=$rvm_ruby_string ; __rvm_select" ; validate_select
rvm_ruby_string="ruby-1.8.6"    ; valid_string="ruby-1.8.6-p383"    ; heat "rvm_ruby_string=$rvm_ruby_string ; __rvm_select" ; validate_select
rvm_ruby_string="1.8.7"         ; valid_string="ruby-1.8.7-p174"    ; heat "rvm_ruby_string=$rvm_ruby_string ; __rvm_select" ; validate_select
rvm_ruby_string="ruby-1.8.7"    ; valid_string="ruby-1.8.7-p174"    ; heat "rvm_ruby_string=$rvm_ruby_string ; __rvm_select" ; validate_select
rvm_ruby_string="1.9.1"         ; valid_string="ruby-1.9.1-p243"    ; heat "rvm_ruby_string=$rvm_ruby_string ; __rvm_select" ; validate_select
rvm_ruby_string="ruby-1.9.1"    ; valid_string="ruby-1.9.1-p243"    ; heat "rvm_ruby_string=$rvm_ruby_string ; __rvm_select" ; validate_select
rvm_ruby_string="ree-1.8.6"     ; valid_string="ree-1.8.6-20090610" ; heat "rvm_ruby_string=$rvm_ruby_string ; __rvm_select" ; validate_select
rvm_ruby_string="ree"           ; valid_string="ree-1.8.7-2009.10"  ; heat "rvm_ruby_string=$rvm_ruby_string ; __rvm_select" ; validate_select
rvm_ruby_string="ree-1.8.7"     ; valid_string="ree-1.8.7-2009.10"  ; heat "rvm_ruby_string=$rvm_ruby_string ; __rvm_select" ; validate_select
rvm_ruby_string="ree-head"      ; valid_string="ree-1.8.7-head"     ; heat "rvm_ruby_string=$rvm_ruby_string ; __rvm_select" ; validate_select
rvm_ruby_string="jruby-1.4.0"   ; valid_string="jruby-1.4.0RC3"     ; heat "rvm_ruby_string=$rvm_ruby_string ; __rvm_select" ; validate_select
rvm_ruby_string="jruby-1.3.1"   ; valid_string="jruby-1.3.1"        ; heat "rvm_ruby_string=$rvm_ruby_string ; __rvm_select" ; validate_select
rvm_ruby_string="jruby-1.6.0"   ; valid_string="jruby-1.6.0"        ; heat "rvm_ruby_string=$rvm_ruby_string ; __rvm_select" ; validate_select
rvm_ruby_string="jruby-1.6.1"   ; valid_string="jruby-1.6.1"        ; heat "rvm_ruby_string=$rvm_ruby_string ; __rvm_select" ; validate_select
rvm_ruby_string="jruby-1.6.2"   ; valid_string="jruby-1.6.2"        ; heat "rvm_ruby_string=$rvm_ruby_string ; __rvm_select" ; validate_select
rvm_ruby_string="jruby-1.6.3"   ; valid_string="jruby-1.6.3"        ; heat "rvm_ruby_string=$rvm_ruby_string ; __rvm_select" ; validate_select
rvm_ruby_string="jruby"         ; valid_string="jruby-1.6.4"        ; heat "rvm_ruby_string=$rvm_ruby_string ; __rvm_select" ; validate_select
valid_string="ruby-1.8.6-p160" ; heat "rvm 1.8.7 -l 160 ; version=\$(ruby -v)"
assert "match" '^ruby 1.8.7 \(2009-04-08 patchlevel 160\)' "$version" ; unset version

rvm_ruby_string='1.9.1-r25443'       ; valid_string="ruby-1.9.1-r25443"          ; heat "rvm_ruby_string=$rvm_ruby_string ; __rvm_select" ; validate_select

if [[ -z $rvm_teset_suite_flag ]]
then
  btu_summary
fi

