package TestCase::Lib::SPVM::Bool {
  use SPVM::Bool;
  
  sub basic : int () {
    # true
    {
      my $true = SPVM::Bool->true;
      
      # SPVM::Bool type
      unless ($true isa SPVM::Bool) {
        return 0;
      }
      
      # Singleton
      unless ($true == SPVM::Bool->true) {
        return 0;
      }
      
      # Value
      my $true_value = $true->value;
      
      unless ($true_value == 1) {
        return 0;
      }
    }

    # false
    {
      my $false = SPVM::Bool->false;
      
      # SPVM::Bool type
      unless ($false isa SPVM::Bool) {
        return 0;
      }
      
      # Singleton
      unless ($false == SPVM::Bool->false) {
        return 0;
      }
      
      # Value
      my $false_value = $false->value;
      
      unless ($false_value == 0) {
        return 0;
      }
    }
    
    return 1;
  }
}