1package mof 2 3import ( 4 "testing" 5) 6 7func TestNil(t *testing.T) { 8 target := &MSFT_DSCConfigurationStatus_Nil{} 9 err := Unmarshal([]byte(snippetWithNil), target) 10 if err != nil { 11 t.Fatal(err) 12 } 13 if target.ReturnValue != 32 { 14 t.Errorf("Return value %d != 32", target.ReturnValue) 15 } 16 rids := target.MSFT_DSCConfigurationStatus[0].ResourcesInDesiredState[0] 17 if rids.ConfigurationName != "" { 18 t.Fatal("Expected NULL to be empty string") 19 } 20} 21 22type MSFT_DSCConfigurationStatus_Nil struct { 23 MSFT_DSCConfigurationStatus []struct { 24 DurationInSeconds int 25 Mode string 26 NumberOfResources int 27 RebootRequested bool 28 ResourcesInDesiredState []struct { 29 ConfigurationName string 30 DurationInSeconds float64 31 } 32 StartDate string 33 Status string 34 Type string 35 } 36 ReturnValue int 37} 38 39const snippetWithNil = `class __PARAMETERS 40{ 41 [Stream: DisableOverride ToSubClass, EmbeddedInstance("MSFT_DSCConfigurationStatus"): ToSubClass, Out, ID(1): DisableOverride ToInstance] MSFT_DSCConfigurationStatus configurationStatus[] = { 42instance of MSFT_DSCConfigurationStatus 43{ 44 DurationInSeconds = 261; 45 HostName = "NY-WINBUILD03"; 46 IPV4Addresses = {"10.7.0.108", "127.0.0.1"}; 47 IPV6Addresses = {"fe80::24e3:b6d2:c6c2:2050%12", "::2000:0:0:0", "::1", "::2000:0:0:0"}; 48 JobID = "{C1B263FB-FD3A-11E6-80D0-0050569D6777}"; 49 LCMVersion = "2.0"; 50 Locale = "en-US"; 51 MACAddresses = {"00-50-56-9D-67-77", "00-00-00-00-00-00-00-E0"}; 52 MetaData = "Author: MSFT_DSCLocalConfigurationManager; Name: MSFT_DSCLocalConfigurationManager; Version: 2.0.0; GenerationDate: 11/23/2016 18:20:33; GenerationHost: GBRAY03;"; 53 Mode = "Pull"; 54 NumberOfResources = 23; 55 RebootRequested = FALSE; 56 ResourcesInDesiredState = { 57instance of MSFT_ResourceInDesiredState 58{ 59 ConfigurationName = NULL; 60 DurationInSeconds = 0; 61 InDesiredState = TRUE; 62 InstanceName = "MonitorAllTheThings::[SEC_Base_Server]JustTheBasics"; 63 ModuleName = NULL; 64 ModuleVersion = NULL; 65 RebootRequested = FALSE; 66 ResourceId = "[scollector]MonitorAllTheThings::[SEC_Base_Server]JustTheBasics"; 67 ResourceName = "scollector"; 68 SourceInfo = NULL; 69 StartDate = "00000000000000.000000+000"; 70}}; 71 StartDate = "20170227221910.721000+000"; 72 Status = "Success"; 73 Type = "Consistency"; 74}}; 75 [out] uint32 ReturnValue = 32; 76};` 77