summaryrefslogtreecommitdiffstats
path: root/metis/ccnx/forwarder/metis/io/test/testrig_MetisListenerOps.c
diff options
context:
space:
mode:
authorLuca Muscariello <lumuscar+fdio@cisco.com>2017-02-24 07:59:45 +0000
committerGerrit Code Review <gerrit@fd.io>2017-02-24 07:59:45 +0000
commite0ec678c016fbce560e7f94973d4fada3ba5e799 (patch)
treea171ed331a830510f3064a6ad99b296ac1b2d2bc /metis/ccnx/forwarder/metis/io/test/testrig_MetisListenerOps.c
parentf28308bd99381ef5f1e178e2e1f870f245e35873 (diff)
parentc580a00aac271a524e5a75b35f4b91c174ed227b (diff)
Merge "Initial commit: sb-forwarder, metis." into sb-forwarder/master
Diffstat (limited to 'metis/ccnx/forwarder/metis/io/test/testrig_MetisListenerOps.c')
-rw-r--r--metis/ccnx/forwarder/metis/io/test/testrig_MetisListenerOps.c113
1 files changed, 113 insertions, 0 deletions
diff --git a/metis/ccnx/forwarder/metis/io/test/testrig_MetisListenerOps.c b/metis/ccnx/forwarder/metis/io/test/testrig_MetisListenerOps.c
new file mode 100644
index 00000000..d0a1f4c0
--- /dev/null
+++ b/metis/ccnx/forwarder/metis/io/test/testrig_MetisListenerOps.c
@@ -0,0 +1,113 @@
+/*
+ * Copyright (c) 2017 Cisco and/or its affiliates.
+ * 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.
+ */
+
+/**
+ * This is a mock for MetisListenerOps
+ *
+ */
+
+/**
+ * You should #include this C file in your unit test code
+ */
+
+// ===============================
+// Setup a mock for the MetisListenerOps
+
+typedef struct mock_listener_data {
+ unsigned destroyCount;
+ unsigned getInterfaceIndexCount;
+ unsigned getListenAddressCount;
+ unsigned getEncapTypeCount;
+
+ // These values will be returned by the appropriate getter
+ unsigned interfaceIndex;
+ CPIAddress *listenAddress;
+ MetisEncapType encapType;
+} MockListenerData;
+
+static void
+mockListener_Destroy(MetisListenerOps **opsPtr)
+{
+ // Don't actually destroy the data, we want to keep the counts
+ MetisListenerOps *ops = *opsPtr;
+ MockListenerData *data = ops->context;
+ data->destroyCount++;
+ parcMemory_Deallocate((void **) &ops);
+ *opsPtr = NULL;
+}
+
+static unsigned
+mockListener_GetInterfaceIndex(const MetisListenerOps *ops)
+{
+ MockListenerData *data = ops->context;
+ data->getInterfaceIndexCount++;
+ return data->interfaceIndex;
+}
+
+static const CPIAddress *
+mockListener_GetListenAddress(const MetisListenerOps *ops)
+{
+ MockListenerData *data = ops->context;
+ data->getListenAddressCount++;
+ return data->listenAddress;
+}
+
+static MetisEncapType
+mockListener_GetEncapType(const MetisListenerOps *ops)
+{
+ MockListenerData *data = ops->context;
+ data->getEncapTypeCount++;
+ return data->encapType;
+}
+
+static MetisListenerOps
+ mockListenerTemplate = {
+ .context = NULL,
+ .destroy = &mockListener_Destroy,
+ .getInterfaceIndex = &mockListener_GetInterfaceIndex,
+ .getListenAddress = &mockListener_GetListenAddress,
+ .getEncapType = &mockListener_GetEncapType
+};
+
+MockListenerData *
+mockListenData_Create(unsigned interfaceIndex, CPIAddress *listenAddress, MetisEncapType encapType)
+{
+ MockListenerData *data = parcMemory_AllocateAndClear(sizeof(MockListenerData));
+ assertNotNull(data, "parcMemory_AllocateAndClear(%zu) returned NULL", sizeof(MockListenerData));
+ memset(data, 0, sizeof(MockListenerData));
+ data->encapType = encapType;
+ data->interfaceIndex = interfaceIndex;
+ data->listenAddress = cpiAddress_Copy(listenAddress);
+ return data;
+}
+
+MetisListenerOps *
+mockListener_Create(MockListenerData *data)
+{
+ MetisListenerOps *ops = parcMemory_AllocateAndClear(sizeof(MetisListenerOps));
+ assertNotNull(ops, "parcMemory_AllocateAndClear(%zu) returned NULL", sizeof(MetisListenerOps));
+ memcpy(ops, &mockListenerTemplate, sizeof(MetisListenerOps));
+ ops->context = data;
+ return ops;
+}
+
+void
+mockListenerData_Destroy(MockListenerData **dataPtr)
+{
+ MockListenerData *data = *dataPtr;
+ cpiAddress_Destroy(&data->listenAddress);
+ parcMemory_Deallocate((void **) &data);
+ *dataPtr = NULL;
+}