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