'This script tests the ability to call "remoted" methods
'on a persisted and nonpersisted SWbemObject

on error resume next
while true
testPassed = true

WScript.Echo "************************************"
WScript.Echo "PASS 1: Nonpersisted object         "
WScript.Echo "************************************"

set obj = GetObject("winmgmts:root/default").Get
set objSink = CreateObject ("WbemScripting.SWbemSink")

WScript.Echo ""
WScript.Echo "Associators_"
set objAssoc = obj.Associators_

if err <> 0 then
	WScript.Echo "Got Error as expected - ", Err.Description, Err.Number, Err.Source
	err.clear
else
	WScript.Echo "ERROR!"
	testPassed = false
end if

WScript.Echo ""
WScript.Echo "AssociatorsAsync_"
obj.AssociatorsAsync_ objSink

if err <> 0 then
	WScript.Echo "Got Error as expected - ", Err.Description, Err.Number, Err.Source
	err.clear
else
	WScript.Echo "ERROR!"
	testPassed = false
end if

WScript.Echo ""
WScript.Echo "Clone_"
set objClone = obj.Clone_

if err <> 0 then
	WScript.Echo "ERROR!"
	testPassed = false
	err.clear
else
	WScript.Echo "Got No Error as expected - "
end if

WScript.Echo ""
WScript.Echo "CompareTo_"
set otherObj = GetObject ("winmgmts:root/default:__cimomidentification=@")
bMatch = obj.CompareTo_ (otherObj)

if err <> 0 then
	WScript.Echo "ERROR!"
	testPassed = false
	err.clear
else
	WScript.Echo "Got No Error as expected - ", bMatch
end if

WScript.Echo ""
WScript.Echo "Delete_"
obj.Delete_

if err <> 0 then
	WScript.Echo "Got Error as expected - ", Err.Description, Err.Number, Err.Source
	err.clear
else
	WScript.Echo "ERROR!"
	testPassed = false
end if

WScript.Echo ""
WScript.Echo "DeleteAsync_"
obj.DeleteAsync_ objSink

if err <> 0 then
	WScript.Echo "Got Error as expected - ", Err.Description, Err.Number, Err.Source
	err.clear
else
	WScript.Echo "ERROR!"
	testPassed = false
end if

WScript.Echo ""
WScript.Echo "ExecMethod_"
obj.ExecMethod_ ("fred")

if err <> 0 then
	WScript.Echo "Got Error as expected - ", Err.Description, Err.Number, Err.Source
	err.clear
else
	WScript.Echo "ERROR!"
	testPassed = false
end if

WScript.Echo ""
WScript.Echo "ExecMethodAsync_"
obj.ExecMethodAsync_ objSink, "fred"

if err <> 0 then
	WScript.Echo "Got Error as expected - ", Err.Description, Err.Number, Err.Source
	err.clear
else
	WScript.Echo "ERROR!"
	testPassed = false
end if

WScript.Echo ""
WScript.Echo "Derivation_"
der = obj.Derivation_

if err <> 0 then
	WScript.Echo "ERROR!"
	testPassed = false
	err.clear
else
	WScript.Echo "Got No Error as expected - ", LBound(der), UBound(der)
end if

WScript.Echo ""
WScript.Echo "Methods_"
set methodSet = obj.Methods_

if err <> 0 then
	WScript.Echo "ERROR!"
	testPassed = false
	err.clear
else
	WScript.Echo "Got No Error as expected - ", methodSet.Count
end if

WScript.Echo ""
WScript.Echo "Path_"
set objPath = obj.Path_

if err <> 0 then
	WScript.Echo "ERROR!"
	testPassed = false
	err.clear
else
	WScript.Echo "Got No Error as expected - ", objPath.DisplayName
end if

WScript.Echo ""
WScript.Echo "Properties_"
set propSet = obj.Properties_

if err <> 0 then
	WScript.Echo "ERROR!"
	testPassed = false
	err.clear
else
	WScript.Echo "Got No Error as expected - ", propSet.Count
end if

WScript.Echo ""
WScript.Echo "Qualifiers_"
set qualSet = obj.Qualifiers_

if err <> 0 then
	WScript.Echo "ERROR!"
	testPassed = false
	err.clear
else
	WScript.Echo "Got No Error as expected - ", qualSet.Count
end if

WScript.Echo ""
WScript.Echo "Security_"
set security = obj.Security_

if err <> 0 then
	WScript.Echo "ERROR!"
	testPassed = false
	err.clear
else
	WScript.Echo "Got No Error as expected - ", security.authenticationLevel, security.impersonationLevel
end if

WScript.Echo ""
WScript.Echo "GetObjectText_"
objText = obj.GetObjectText_

if err <> 0 then
	WScript.Echo "Got Error as expected - ", Err.Description, Err.Number, Err.Source
	err.clear
else
	WScript.Echo "ERROR!"
	testPassed = false
end if

WScript.Echo ""
WScript.Echo "Instances_"
set instanceSet = obj.Instances_

if err <> 0 then
	WScript.Echo "Got Error as expected - ", Err.Description, Err.Number, Err.Source
	err.clear
else
	WScript.Echo "ERROR!"
	testPassed = false
end if

WScript.Echo ""
WScript.Echo "InstancesAsync_"
obj.InstancesAsync_ objSink

if err <> 0 then
	WScript.Echo "Got Error as expected - ", Err.Description, Err.Number, Err.Source
	err.clear
else
	WScript.Echo "ERROR!"
	testPassed = false
end if

WScript.Echo ""
WScript.Echo "Put_"
set objPath = obj.Put_

if err <> 0 then
	WScript.Echo "Got Error as expected - ", Err.Description, Err.Number, Err.Source
	err.clear
else
	WScript.Echo "ERROR!"
	testPassed = false
end if

WScript.Echo ""
WScript.Echo "PutAsync_"
obj.PutAsync_ objSink

if err <> 0 then
	WScript.Echo "ERROR!"
	testPassed = false
	err.clear
else
	WScript.Echo "Got no Error as expected"
end if


WScript.Echo ""
WScript.Echo "References_"
set objSet = obj.References_

if err <> 0 then
	WScript.Echo "Got Error as expected - ", Err.Description, Err.Number, Err.Source
	err.clear
else
	WScript.Echo "ERROR!"
	testPassed = false
end if

WScript.Echo ""
WScript.Echo "ReferencesAsync_"
obj.ReferencesAsync_ objSink

if err <> 0 then
	WScript.Echo "Got Error as expected - ", Err.Description, Err.Number, Err.Source
	err.clear
else
	WScript.Echo "ERROR!"
	testPassed = false
end if

WScript.Echo ""
WScript.Echo "SpawnDerivedClass_"
set objSub = obj.SpawnDerivedClass_

if err <> 0 then
	WScript.Echo "Got Error as expected - ", Err.Description, Err.Number, Err.Source
	err.clear
else
	WScript.Echo "ERROR!"
	testPassed = false
end if

WScript.Echo ""
WScript.Echo "SpawnInstance_"
set objSub = obj.SpawnInstance_

if err <> 0 then
	WScript.Echo "Got Error as expected - ", Err.Description, Err.Number, Err.Source
	err.clear
else
	WScript.Echo "ERROR!"
	testPassed = false
end if

WScript.Echo ""
WScript.Echo "Subclasses_"
set objSet = obj.Subclasses_

if err <> 0 then
	WScript.Echo "Got Error as expected - ", Err.Description, Err.Number, Err.Source
	err.clear
else
	WScript.Echo "ERROR!"
	testPassed = false
end if

WScript.Echo ""
WScript.Echo "SubclassesAsync_"
obj.SubclassesAsync_ objSink

if err <> 0 then
	WScript.Echo "Got Error as expected - ", Err.Description, Err.Number, Err.Source
	err.clear
else
	WScript.Echo "ERROR!"
	testPassed = false
end if

if testPassed <> true then
	WScript.Echo ""
	WScript.Echo "*************************************"
	WScript.Echo "TEST FAILED!!!!!!!!!!!!!!!!!!!!!!!!!!"
	WScript.Echo "*************************************"
else
	WScript.Echo ""
	WScript.Echo "*************************************"
	WScript.Echo "Test passed"
	WScript.Echo "*************************************"
end if

WScript.Echo "************************************"
WScript.Echo "PASS 2: Persisted object         "
WScript.Echo "************************************"

obj.Path_.Class = "TESTCLASSERR00"
set Property = obj.Properties_.Add ("Fred", 19)
Property.Qualifiers_.Add "key", true
obj.Put_ 
set obj = GetObject ("winmgmts:root/default:TESTCLASSERR00")

if err <> 0 then
	WScript.Echo "ERROR! - ", Err.Description, Err.Number, Err.Source
	testPassed = false
else
	WScript.Echo obj.Path_.RelPath
end if

WScript.Echo ""
WScript.Echo "Associators_"
set objAssoc = obj.Associators_

if err <> 0 then
	WScript.Echo "ERROR!"
	testPassed = false
else
	WScript.Echo "Got No Error as expected - "
	err.clear
end if

WScript.Echo ""
WScript.Echo "AssociatorsAsync_"
obj.AssociatorsAsync_ objSink

if err <> 0 then
	WScript.Echo "ERROR!"
	testPassed = false
else
	WScript.Echo "Got No Error as expected - "
	err.clear
end if

WScript.Echo ""
WScript.Echo "Clone_"
set objClone = obj.Clone_

if err <> 0 then
	WScript.Echo "ERROR!"
	testPassed = false
else
	WScript.Echo "Got No Error as expected - "
	err.clear
end if

WScript.Echo ""
WScript.Echo "CompareTo_"
set otherObj = GetObject ("winmgmts:root/default:__cimomidentification=@")
bMatch = obj.CompareTo_ (otherObj)

if err <> 0 then
	WScript.Echo "ERROR!"
	testPassed = false
else
	WScript.Echo "Got No Error as expected - ", bMatch
	err.clear
end if

WScript.Echo ""
WScript.Echo "ExecMethod_"
obj.ExecMethod_ ("fred")

if err <> 0 then
	WScript.Echo "Got Error as expected - ", Err.Description, Err.Number, Err.Source
	err.clear
else
	WScript.Echo "ERROR!"
	testPassed = false
end if

WScript.Echo ""
WScript.Echo "ExecMethodAsync_"
obj.ExecMethodAsync_ objSink, "fred"

if err <> 0 then
	WScript.Echo "ERROR!"
	testPassed = false
	err.clear
else
	WScript.Echo "Got no error - as expected"
end if

WScript.Echo ""
WScript.Echo "Derivation_"
der = obj.Derivation_

if err <> 0 then
	WScript.Echo "ERROR!"
	testPassed = false
else
	WScript.Echo "Got No Error as expected - ", LBound(der), UBound(der)
	err.clear
end if

WScript.Echo ""
WScript.Echo "Methods_"
set methodSet = obj.Methods_

if err <> 0 then
	WScript.Echo "ERROR!"
	testPassed = false
else
	WScript.Echo "Got No Error as expected - ", methodSet.Count
	err.clear
end if

WScript.Echo ""
WScript.Echo "Path_"
set objPath = obj.Path_

if err <> 0 then
	WScript.Echo "ERROR!"
	testPassed = false
else
	WScript.Echo "Got No Error as expected - ", objPath.DisplayName
	err.clear
end if

WScript.Echo ""
WScript.Echo "Properties_"
set propSet = obj.Properties_

if err <> 0 then
	WScript.Echo "ERROR!"
	testPassed = false
else
	WScript.Echo "Got No Error as expected - ", propSet.Count
	err.clear
end if

WScript.Echo ""
WScript.Echo "Qualifiers_"
set qualSet = obj.Qualifiers_

if err <> 0 then
	WScript.Echo "ERROR!"
	testPassed = false
else
	WScript.Echo "Got No Error as expected - ", qualSet.Count
	err.clear
end if

WScript.Echo ""
WScript.Echo "Security_"
set security = obj.Security_

if err <> 0 then
	WScript.Echo "ERROR!"
	testPassed = false
else
	WScript.Echo "Got No Error as expected - ", security.authenticationLevel, security.impersonationLevel
	err.clear
end if

WScript.Echo ""
WScript.Echo "GetObjectText_"
objText = obj.GetObjectText_

if err <> 0 then
	WScript.Echo "ERROR!"
	testPassed = false
else
	WScript.Echo "Got No Error as expected - "
	err.clear
end if

WScript.Echo ""
WScript.Echo "Instances_"
set instanceSet = obj.Instances_

if err <> 0 then
	WScript.Echo "ERROR!"
	testPassed = false
else
	WScript.Echo "Got No Error as expected - "
	err.clear
end if

WScript.Echo ""
WScript.Echo "InstancesAsync_"
obj.InstancesAsync_ objSink

if err <> 0 then
	WScript.Echo "ERROR!"
	testPassed = false
else
	WScript.Echo "Got No Error as expected - "
	err.clear
end if

WScript.Echo ""
WScript.Echo "Put_"
set objPath = obj.Put_

if err <> 0 then
	WScript.Echo "ERROR!"
	testPassed = false
else
	WScript.Echo "Got No Error as expected - "
	err.clear
end if

WScript.Echo ""
WScript.Echo "PutAsync_"
obj.PutAsync_ objSink

if err <> 0 then
	WScript.Echo "ERROR!"
	testPassed = false
else
	WScript.Echo "Got no Error as expected"
	err.clear
end if


WScript.Echo ""
WScript.Echo "References_"
set objSet = obj.References_

if err <> 0 then
	WScript.Echo "ERROR!"
	testPassed = false
else
	WScript.Echo "Got No Error as expected - "
	err.clear
end if

WScript.Echo ""
WScript.Echo "ReferencesAsync_"
obj.ReferencesAsync_ objSink

if err <> 0 then
	WScript.Echo "ERROR!"
	testPassed = false
else
	WScript.Echo "Got No Error as expected - "
	err.clear
end if

WScript.Echo ""
WScript.Echo "SpawnDerivedClass_"
set objSub = obj.SpawnDerivedClass_

if err <> 0 then
	WScript.Echo "ERROR!", Err.Number, Err.Description, Err.Source
	testPassed = false
else
	WScript.Echo "Got No Error as expected - "
	err.clear
end if

WScript.Echo ""
WScript.Echo "SpawnInstance_"
set objSub = obj.SpawnInstance_

if err <> 0 then
	WScript.Echo "ERROR!"
	testPassed = false
else
	WScript.Echo "Got No Error as expected - "
	err.clear
end if

WScript.Echo ""
WScript.Echo "Subclasses_"
set objSet = obj.Subclasses_

if err <> 0 then
	WScript.Echo "ERROR!"
	testPassed = false
else
	WScript.Echo "Got No Error as expected - "
	err.clear
end if

WScript.Echo ""
WScript.Echo "SubclassesAsync_"
obj.SubclassesAsync_ objSink

if err <> 0 then
	WScript.Echo "ERROR!"
	testPassed = false
else
	WScript.Echo "Got No Error as expected - "
	err.clear
end if

WScript.Echo ""
WScript.Echo "Delete_"
obj.Delete_

if err <> 0 then
	WScript.Echo "ERROR!"
	testPassed = false
else
	WScript.Echo "No err as expected"
end if

obj.Put_

WScript.Echo ""
WScript.Echo "DeleteAsync_"
obj.DeleteAsync_ objSink

if err <> 0 then
	WScript.Echo "ERROR!"
	testPassed = false
else
	WScript.Echo "Got No Error as expected"
	err.clear
end if

if testPassed <> true then
	WScript.Echo ""
	WScript.Echo "*************************************"
	WScript.Echo "TEST FAILED!!!!!!!!!!!!!!!!!!!!!!!!!!"
	WScript.Echo "*************************************"
else
	WScript.Echo ""
	WScript.Echo "*************************************"
	WScript.Echo "Test passed"
	WScript.Echo "*************************************"
end if

wend