Return-Path: X-Original-To: apmail-incubator-celix-commits-archive@minotaur.apache.org Delivered-To: apmail-incubator-celix-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id DBB8D10FF7 for ; Tue, 3 Dec 2013 13:41:50 +0000 (UTC) Received: (qmail 26572 invoked by uid 500); 3 Dec 2013 13:40:13 -0000 Delivered-To: apmail-incubator-celix-commits-archive@incubator.apache.org Received: (qmail 26354 invoked by uid 500); 3 Dec 2013 13:40:03 -0000 Mailing-List: contact celix-commits-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: celix-dev@incubator.apache.org Delivered-To: mailing list celix-commits@incubator.apache.org Received: (qmail 26309 invoked by uid 99); 3 Dec 2013 13:40:00 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 03 Dec 2013 13:40:00 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 03 Dec 2013 13:39:57 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id 4B4C7238888F; Tue, 3 Dec 2013 13:39:36 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1547388 - in /incubator/celix/trunk/framework/private: resources-test/manifest.txt resources-test/manifest_sections.txt src/manifest.c test/manifest_test.cpp Date: Tue, 03 Dec 2013 13:39:36 -0000 To: celix-commits@incubator.apache.org From: abroekhuis@apache.org X-Mailer: svnmailer-1.0.9 Message-Id: <20131203133936.4B4C7238888F@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: abroekhuis Date: Tue Dec 3 13:39:35 2013 New Revision: 1547388 URL: http://svn.apache.org/r1547388 Log: CELIX-93: Applied patch and added test cases to verify behaviour. Added: incubator/celix/trunk/framework/private/resources-test/manifest.txt incubator/celix/trunk/framework/private/resources-test/manifest_sections.txt Modified: incubator/celix/trunk/framework/private/src/manifest.c incubator/celix/trunk/framework/private/test/manifest_test.cpp Added: incubator/celix/trunk/framework/private/resources-test/manifest.txt URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/resources-test/manifest.txt?rev=1547388&view=auto ============================================================================== --- incubator/celix/trunk/framework/private/resources-test/manifest.txt (added) +++ incubator/celix/trunk/framework/private/resources-test/manifest.txt Tue Dec 3 13:39:35 2013 @@ -0,0 +1,4 @@ +Bundle-SymbolicName: client +Bundle-Version: 1.0.0 +library: client +Import-Service: server Added: incubator/celix/trunk/framework/private/resources-test/manifest_sections.txt URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/resources-test/manifest_sections.txt?rev=1547388&view=auto ============================================================================== --- incubator/celix/trunk/framework/private/resources-test/manifest_sections.txt (added) +++ incubator/celix/trunk/framework/private/resources-test/manifest_sections.txt Tue Dec 3 13:39:35 2013 @@ -0,0 +1,10 @@ +Bundle-SymbolicName: client +Bundle-Version: 1.0.0 +library: client +Import-Service: server + +Name: a +a: 1 + +Name: b +b: 1 Modified: incubator/celix/trunk/framework/private/src/manifest.c URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/src/manifest.c?rev=1547388&r1=1547387&r2=1547388&view=diff ============================================================================== --- incubator/celix/trunk/framework/private/src/manifest.c (original) +++ incubator/celix/trunk/framework/private/src/manifest.c Tue Dec 3 13:39:35 2013 @@ -174,6 +174,7 @@ celix_status_t manifest_read(manifest_pt } manifest_readAttributes(manifest, attributes, file); + name = NULL; skipEmptyLines = true; } apr_pool_destroy(subpool); Modified: incubator/celix/trunk/framework/private/test/manifest_test.cpp URL: http://svn.apache.org/viewvc/incubator/celix/trunk/framework/private/test/manifest_test.cpp?rev=1547388&r1=1547387&r2=1547388&view=diff ============================================================================== --- incubator/celix/trunk/framework/private/test/manifest_test.cpp (original) +++ incubator/celix/trunk/framework/private/test/manifest_test.cpp Tue Dec 3 13:39:35 2013 @@ -33,6 +33,7 @@ extern "C" { #include "manifest.h" +#include "hash_map.h" } int main(int argc, char** argv) { @@ -54,5 +55,126 @@ TEST_GROUP(manifest) { } }; +TEST(manifest, createFromFile) { + char *manifestFile = "../../celix/framework/private/resources-test/manifest.txt"; + manifest_pt manifest = NULL; +// properties_pt properties = properties_create(); + properties_pt properties = (properties_pt) 0x40; + void *ov = (void *) 0x00; + + mock() + .expectOneCall("properties_create") + .andReturnValue(properties); + mock() + .expectOneCall("properties_set") + .withParameter("properties", properties) + .withParameter("key", "Bundle-SymbolicName") + .withParameter("value", "client") + .andReturnValue(ov); + mock() + .expectOneCall("properties_set") + .withParameter("properties", properties) + .withParameter("key", "Bundle-Version") + .withParameter("value", "1.0.0") + .andReturnValue(ov); + mock() + .expectOneCall("properties_set") + .withParameter("properties", properties) + .withParameter("key", "library") + .withParameter("value", "client") + .andReturnValue(ov); + mock() + .expectOneCall("properties_set") + .withParameter("properties", properties) + .withParameter("key", "Import-Service") + .withParameter("value", "server") + .andReturnValue(ov); + mock() + .expectOneCall("properties_destroy") + .withParameter("properties", properties); + manifest_createFromFile(pool, manifestFile, &manifest); +} + +TEST(manifest, createFromFileWithSections) { + char *manifestFile = "../../celix/framework/private/resources-test/manifest_sections.txt"; + manifest_pt manifest = NULL; +// properties_pt properties = properties_create(); + properties_pt properties = (properties_pt) 0x40; + properties_pt properties2 = (properties_pt) 0x41; + properties_pt properties3 = (properties_pt) 0x42; + void *ov = (void *) 0x00; + + mock() + .expectOneCall("properties_create") + .andReturnValue(properties); + mock() + .expectOneCall("properties_set") + .withParameter("properties", properties) + .withParameter("key", "Bundle-SymbolicName") + .withParameter("value", "client") + .andReturnValue(ov); + mock() + .expectOneCall("properties_set") + .withParameter("properties", properties) + .withParameter("key", "Bundle-Version") + .withParameter("value", "1.0.0") + .andReturnValue(ov); + mock() + .expectOneCall("properties_set") + .withParameter("properties", properties) + .withParameter("key", "library") + .withParameter("value", "client") + .andReturnValue(ov); + mock() + .expectOneCall("properties_set") + .withParameter("properties", properties) + .withParameter("key", "Import-Service") + .withParameter("value", "server") + .andReturnValue(ov); + mock() + .expectOneCall("properties_create") + .andReturnValue(properties2); + mock() + .expectOneCall("properties_set") + .withParameter("properties", properties2) + .withParameter("key", "a") + .withParameter("value", "1") + .andReturnValue(ov); + mock() + .expectOneCall("properties_create") + .andReturnValue(properties3); + mock() + .expectOneCall("properties_set") + .withParameter("properties", properties3) + .withParameter("key", "b") + .withParameter("value", "1") + .andReturnValue(ov); + mock() + .expectOneCall("properties_get") + .withParameter("properties", properties) + .withParameter("key", "Bundle-SymbolicName") + .andReturnValue("bsn"); + mock() + .expectOneCall("properties_destroy") + .withParameter("properties", properties); + + manifest_createFromFile(pool, manifestFile, &manifest); + + properties_pt main = manifest_getMainAttributes(manifest); + POINTERS_EQUAL(properties, main); + + char *name = manifest_getValue(manifest, "Bundle-SymbolicName"); + STRCMP_EQUAL("bsn", name); + + hash_map_pt map = NULL; + manifest_getEntries(manifest, &map); + LONGS_EQUAL(2, hashMap_size(map)); + + properties_pt actual = (properties_pt) hashMap_get(map, (void *) "a"); + POINTERS_EQUAL(properties2, actual); + + actual = (properties_pt) hashMap_get(map, (void *) "b"); + POINTERS_EQUAL(properties3, actual); +}