Merge: Bundle: Nit API wrapping Bundle class
authorJean Privat <jean@pryen.org>
Thu, 10 Jul 2014 19:02:33 +0000 (15:02 -0400)
committerJean Privat <jean@pryen.org>
Thu, 10 Jul 2014 19:02:33 +0000 (15:02 -0400)
The Bundle class is an Android API custom mapping class. It maps `String` to various value types. This class is used by a lot of android callbacks and classes in general. It is mainly used to communicate data between application entities.

Required by the `Intent` API

Signed-off-by: Frédéric Vachon <fredvac@gmail.com>

Pull-Request: #507
Reviewed-by: Alexis Laferrière <alexis.laf@xymus.net>
Reviewed-by: Jean Privat <jean@pryen.org>
Reviewed-by: Romain Chanoir <chanoir.romain@courrier.uqam.ca>

1  2 
examples/mnit_simple/src/simple_android.nit

@@@ -21,9 -21,8 +21,10 @@@ en
  
  import simple
  import mnit_android
+ import android::bundle
  import android::shared_preferences
 +import android::assets_and_resources
 +import android::audio
  
  in "Java" `{
        import android.content.Context;
  `}
  
  redef class App
 +      var soundsp: Sound
 +      var soundmp: Sound
 +
 +      redef fun init_window
 +      do
 +              super
 +              manage_audio_mode
 +              # retrieve sound
 +              soundsp = load_sound("sound.ogg")
 +              soundmp = load_music("xylofon.ogg")
 +              default_mediaplayer.looping = true
 +              default_mediaplayer.prepare
 +              soundmp.play
 +      end
 +
        redef fun input( ie )
        do
-               if ie isa PointerEvent and ie.depressed then
+               if ie isa PointerEvent and ie.depressed then 
                        do_java_stuff
-                       #test_shared_preferences
+                       test_bundle
+                       test_shared_preferences
 +                      soundsp.play
 +                      test_assets
 +                      test_resources
                end
                return super
        end
  
 +      #testing the assets manager
 +      fun test_assets
 +      do
 +              assert asset_manager.bitmap("fighter.png") != null
 +      end
 +
 +      #testing the resources manager
 +      fun test_resources do
 +              assert resource_manager.string("string_test") == "string test"
 +              assert resource_manager.boolean("test_bool") == true
 +              assert resource_manager.dimension("test_dimen_1") != null
 +              assert resource_manager.dimension("test_dimen_2") != null
 +      end
 +
+       fun test_bundle
+       do
+               var bundle = new Bundle(self)
+                
+               bundle["anInt"] = 1
+               bundle["aFloat"] = 1.1
+               bundle["aString"] = "A string"
+               bundle["aBool"] = true
+               
+               var int_array = new Array[Int]
+               var bool_array = new Array[Bool]
+               var value = true
+               for i in [0..5] do
+                       int_array.add(i)
+                       bool_array.add(value)
+                       value = not value
+               end
+               bundle["anArrayOfInt"] = int_array
+               bundle["anArrayOfBool"] = bool_array
+               assert bundle.int("anInt", 0) == 1
+               assert bundle.int("wrongInt", 0) == 0
+               assert bundle.float("aFloat", 0.0) == 1.1
+               assert bundle.float("wrongFloat", 0.0) == 0.0
+               assert bundle.string("aString") == "A string"
+               assert bundle.string("wrongString") == null
+               assert bundle.bool("aBool", false)
+               assert bundle.bool("wrongBool", false) == false
+               
+               var int_array_test = bundle.array_of_int("anArrayOfInt")
+               var bool_array_test = bundle.array_of_bool("anArrayOfBool")
+               value = true
+               for i in [0..5] do
+                       assert int_array_test[i] == i
+                       assert bool_array_test[i] == value
+                       value = not value
+               end
+               
+               assert bundle.size == 6
+               assert bundle.has("aBool")
+               assert not bundle.is_empty
+               bundle.remove("aString")
+               bundle.remove("anArrayOfBool")
+               assert bundle.string("aString") == null
+               assert bundle.array_of_bool("anArrayOfBool") == null
+               # Serializable tests
+               var p1 = new Point(10, 10)
+               bundle["aPoint"] = p1
+               var p2 = bundle.deserialize("aPoint")
+               assert p1.to_s == p2.to_s
+               var point_array = new Array[Point]
+               for i in [0..5] do point_array.add(new Point(i, i))
+               bundle["anArrayOfPoint"] = point_array
+               var deserialized_point_array = bundle.deserialize_array("anArrayOfPoint")
+               for i in [0..5] do 
+                       var point = new Point(i, i)
+                       assert deserialized_point_array[i].to_s == point.to_s
+               end
+               bundle.clear
+               assert bundle.keys.is_empty
+               assert bundle.is_empty
+       end
  
        fun test_shared_preferences
        do