<reponame>pombredanne/go-python-gopy<gh_stars>1000+
# Copyright 2017 The go-python Authors.  All rights reserved.
# Use of this source code is governed by a BSD-style
# license that can be found in the LICENSE file.

from __future__ import print_function
import maps

a = maps.New()
b = {1: 3.0, 2: 5.0}

# set to true to test all the builtin map functionality
# due to the random nature of map access in Go, this will
# cause go test to fail randomly so it is off by default
# but should be re-enabled when anything significant is
# changed!
testall = False

if testall:
    print('map a:', a)
    print('map a repr:', a.__repr__())

    print('map a keys:', a.keys())
    print('map a values:', a.values())
    print('map a items:', a.items())
    print('map a iter')
    for k,v in a:
        print("key:", k, "value:", v)

print('map a[1]:', a[1])
print('map a[2]:', a[2])
print('2 in map:', 2 in a)
print('3 in map:', 3 in a)

# TODO: not sure why python2 doesn't just catch this error, but it doesn't seem to..
# try:
#     v = a[4]
# except Exception as err:
#     print("caught error: %s" % (err,))
#     pass

    
print('maps.Sum from Go map:', maps.Sum(a))

print('map b:', b)

print('maps.Sum from Python dictionary:', maps.Sum(maps.Map_int_float64(b)))
print('maps.Keys from Go map:', maps.Keys(a))
print('maps.Values from Go map:', maps.Values(a))
print('maps.Keys from Python dictionary:', maps.Keys(maps.Map_int_float64(b)))
print('maps.Values from Python dictionary:', maps.Values(maps.Map_int_float64(b)))

del a[1]
print('deleted 1 from a:', a)

print("OK")
