Fixed failing test

This commit is contained in:
Benoit Blanchon
2014-07-31 18:50:01 +02:00
parent 1ce6661fa6
commit 85ffb83aa6
3 changed files with 32 additions and 9 deletions

View File

@ -6,6 +6,7 @@
#pragma once
#include "Print.h"
#include <string.h> // for strcmp
namespace ArduinoJson
{
@ -21,6 +22,11 @@ namespace ArduinoJson
}
size_t printTo(Print&) const;
bool equals(char const* s)
{
return strcmp(s, rawString) == 0;
}
private:
const char* rawString;

View File

@ -33,4 +33,21 @@ size_t JsonObjectBase::printTo(Print& p) const
n += p.write('}');
return n;
}
JsonObjectBase::KeyValuePair* JsonObjectBase::getMatchingPair(char const* key)
{
for (int i = 0; i < count; ++i)
{
if (items[i].key.equals(key))
{
return &items[i];
}
}
if (count >= capacity) return 0;
KeyValuePair* p = &items[count++];
p->key.set(key);
return p;
}

View File

@ -19,22 +19,20 @@ namespace ArduinoJson
template<typename T>
void add(const char* key, T value)
{
if (count >= capacity) return;
KeyValuePair* pair = getMatchingPair(key);
if (!pair) return;
items[count].key.set(key);
items[count].value.set(value);
count++;
pair->value.set(value);
}
template<int DIGITS>
void add(const char* key, double value)
{
if (count >= capacity) return;
KeyValuePair* pair = getMatchingPair(key);
if (!pair) return;
items[count].key.set(key);
items[count].value.set<DIGITS>(value);
count++;
}
pair->value.set<DIGITS>(value);
}
using JsonPrintable::printTo;
@ -53,6 +51,8 @@ namespace ArduinoJson
{
}
KeyValuePair* getMatchingPair(const char* key);
private:
KeyValuePair* items;
int capacity, count;