Fix mis-implementation for GetLinearEnumerationName 58/305558/1
authorEunki, Hong <eunkiki.hong@samsung.com>
Mon, 5 Feb 2024 03:51:24 +0000 (12:51 +0900)
committerEunki, Hong <eunkiki.hong@samsung.com>
Mon, 5 Feb 2024 04:13:00 +0000 (13:13 +0900)
Let we fix mis-implementation of GetLinearEnumerationName,
and add relative UTC for it.

Change-Id: I77dc0b9ae3ca0f5fd563f12e8faaf4fc36549b97
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
automated-tests/src/dali/utc-Dali-Scripting.cpp
dali/devel-api/scripting/scripting.h

index 3d543fa..3ae14f1 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2020 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2024 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -490,6 +490,48 @@ int UtcDaliScriptingGetLinearEnumerationNameN(void)
   END_TEST;
 }
 
+int UtcDaliScriptingGetLinearEnumerationNameP(void)
+{
+  const Scripting::StringEnum myTable[] =
+    {
+      {"ONE", 0},
+      {"TWO", 1},
+      {"THREE", 2},
+      {"FOUR", 3},
+      {"FIVE", 4},
+    };
+  const unsigned int myTableCount = sizeof(myTable) / sizeof(myTable[0]);
+
+  for(uint32_t i = 0; i < myTableCount; ++i)
+  {
+    const char* value = GetLinearEnumerationName<int32_t>(static_cast<int32_t>(i), myTable, myTableCount);
+    // We know that myTable[i].string is result. But for make clear test, let we just iterate and found it
+    std::string expectName = "invalid";
+    for(uint32_t j = 0; j < myTableCount; ++j)
+    {
+      if(myTable[j].value == static_cast<int32_t>(i))
+      {
+        DALI_TEST_CHECK(i == j);
+        expectName = myTable[j].string;
+        break;
+      }
+    }
+    DALI_TEST_EQUALS(std::string(value), expectName, TEST_LOCATION);
+  }
+
+  // Invalid case check
+  {
+    const char* value = GetLinearEnumerationName<int32_t>(static_cast<int32_t>(myTableCount), myTable, myTableCount);
+    DALI_TEST_CHECK(NULL == value);
+  }
+  {
+    const char* value = GetLinearEnumerationName<int32_t>(-1, myTable, myTableCount);
+    DALI_TEST_CHECK(NULL == value);
+  }
+
+  END_TEST;
+}
+
 int UtcDaliScriptingGetEnumerationProperty(void)
 {
   /*
index cc6a3f2..1e01c1d 100644 (file)
@@ -2,7 +2,7 @@
 #define DALI_SCRIPTING_H
 
 /*
- * Copyright (c) 2020 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2024 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -242,7 +242,7 @@ const char* GetEnumerationName(T value, const StringEnum* table, uint32_t tableC
 template<typename T>
 const char* GetLinearEnumerationName(T value, const StringEnum* table, uint32_t tableCount)
 {
-  if(table && (value > 0 || value <= static_cast<int>(tableCount)))
+  if(table && (value >= 0 && value < static_cast<int>(tableCount)))
   {
     return table[value].string;
   }