diff --git a/generated/classidmap_test.go b/generated/classidmap_test.go
new file mode 100644
index 0000000..e3dde04
--- /dev/null
+++ b/generated/classidmap_test.go
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2018 - present.  Boling Consulting Solutions (bcsw.net)
+ * Copyright 2020-present Open Networking Foundation
+
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+
+ * http://www.apache.org/licenses/LICENSE-2.0
+
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+/*
+ * NOTE: This file was generated, manual edits will be overwritten!
+ *
+ * Generated by 'goCodeGenerator.py':
+ *              https://github.com/cboling/OMCI-parser/README.md
+ */
+
+package generated
+
+import (
+	"github.com/stretchr/testify/assert"
+	"testing"
+)
+
+func TestClassIDMap(t *testing.T) {
+	for classID, function := range classToManagedEntityMap {
+		managedEntity, omciError := function()
+
+		assert.NotNil(t, managedEntity)
+		assert.Equal(t, omciError.StatusCode(), Success)
+
+		assert.Equal(t, classID, managedEntity.GetClassID())
+		assert.NotNil(t, managedEntity.GetManagedEntityDefinition())
+	}
+}
