Skip to content

Commit ef0559d

Browse files
authored
fix: double variation was returning ints (#335)
The C bindings for `DoubleVariation/Detail` were returning `int` instead of `double`.
1 parent 2b7f7d6 commit ef0559d

File tree

4 files changed

+34
-7
lines changed

4 files changed

+34
-7
lines changed

libs/server-sdk/include/launchdarkly/server_side/bindings/c/sdk.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,7 @@ LDServerSDK_IntVariationDetail(LDServerSDK sdk,
303303
* @return The variation for the given context, or default_value if the
304304
* flag is disabled in the LaunchDarkly control panel.
305305
*/
306-
LD_EXPORT(int)
306+
LD_EXPORT(double)
307307
LDServerSDK_DoubleVariation(LDServerSDK sdk,
308308
LDContext context,
309309
char const* flag_key,
@@ -322,7 +322,7 @@ LDServerSDK_DoubleVariation(LDServerSDK sdk,
322322
* @return The variation for the given context, or default_value if the
323323
* flag is disabled in the LaunchDarkly control panel.
324324
*/
325-
LD_EXPORT(int)
325+
LD_EXPORT(double)
326326
LDServerSDK_DoubleVariationDetail(LDServerSDK sdk,
327327
LDContext context,
328328
char const* flag_key,

libs/server-sdk/src/bindings/c/sdk.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,7 @@ struct Detail;
2626

2727
#define FROM_DETAIL(ptr) (reinterpret_cast<LDEvalDetail>(ptr))
2828

29-
#define TO_DATASOURCESTATUS(ptr) \
30-
(reinterpret_cast<DataSourceStatus*>(ptr))
29+
#define TO_DATASOURCESTATUS(ptr) (reinterpret_cast<DataSourceStatus*>(ptr))
3130

3231
#define FROM_DATASOURCESTATUS(ptr) \
3332
(reinterpret_cast<LDServerDataSourceStatus>(ptr))
@@ -260,7 +259,7 @@ LDServerSDK_IntVariationDetail(LDServerSDK sdk,
260259
});
261260
}
262261

263-
LD_EXPORT(int)
262+
LD_EXPORT(double)
264263
LDServerSDK_DoubleVariation(LDServerSDK sdk,
265264
LDContext context,
266265
char const* flag_key,
@@ -273,7 +272,7 @@ LDServerSDK_DoubleVariation(LDServerSDK sdk,
273272
default_value);
274273
}
275274

276-
LD_EXPORT(int)
275+
LD_EXPORT(double)
277276
LDServerSDK_DoubleVariationDetail(LDServerSDK sdk,
278277
LDContext context,
279278
char const* flag_key,

libs/server-sdk/tests/client_test.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,8 @@ TEST_F(ClientTest, IntVariationDefaultPassesThrough) {
5252

5353
TEST_F(ClientTest, DoubleVariationDefaultPassesThrough) {
5454
std::string const flag = "weight";
55-
std::vector<double> values = {0.0, 12.0, 13.0, 24.0, 1000.0};
55+
std::vector<double> values = {0.0, 0.0001, 0.5, 1.234,
56+
12.0, 13.0, 24.0, 1000.0};
5657
for (auto const& v : values) {
5758
ASSERT_EQ(client_.DoubleVariation(context_, flag, v), v);
5859
ASSERT_EQ(*client_.DoubleVariationDetail(context_, flag, v), v);

libs/server-sdk/tests/server_c_bindings_test.cpp

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,3 +159,30 @@ TEST(ClientBindings, AllFlagsState) {
159159
LDContext_Free(context);
160160
LDServerSDK_Free(sdk);
161161
}
162+
163+
TEST(ClientBindings, DoubleVariationPassesThroughDefault) {
164+
LDServerConfigBuilder cfg_builder = LDServerConfigBuilder_New("sdk-123");
165+
166+
LDServerConfig config;
167+
LDStatus status = LDServerConfigBuilder_Build(cfg_builder, &config);
168+
ASSERT_TRUE(LDStatus_Ok(status));
169+
170+
LDServerSDK sdk = LDServerSDK_New(config);
171+
172+
LDContextBuilder ctx_builder = LDContextBuilder_New();
173+
LDContextBuilder_AddKind(ctx_builder, "user", "shadow");
174+
LDContext context = LDContextBuilder_Build(ctx_builder);
175+
176+
std::string const flag = "weight";
177+
std::vector<double> values = {0.0, 0.0001, 0.5, 1.234,
178+
12.9, 13.211, 24.0, 1000.0};
179+
for (auto const& v : values) {
180+
ASSERT_EQ(LDServerSDK_DoubleVariation(sdk, context, "weight", v), v);
181+
ASSERT_EQ(LDServerSDK_DoubleVariationDetail(sdk, context, "weight", v,
182+
LD_DISCARD_DETAIL),
183+
v);
184+
}
185+
186+
LDServerSDK_Free(sdk);
187+
LDContext_Free(context);
188+
}

0 commit comments

Comments
 (0)