package geohash_test

import (
	"fmt"

	"github.com/mmcloughlin/geohash"
)

func Example() {
	// Uluru in Australian Outback
	lat, lng := -25.345457, 131.036192

	// Encode a full 12 character string geohash
	fmt.Println(geohash.Encode(lat, lng))

	// Or at lower precision
	fmt.Println(geohash.EncodeWithPrecision(lat, lng, 6))

	// As an integer
	fmt.Printf("%016x\n", geohash.EncodeInt(lat, lng))

	// Decode to a point
	fmt.Println(geohash.Decode("qgmpvf18"))

	// or to a bounding box
	fmt.Println(geohash.BoundingBox("qgmpvf18"))

	// Output:
	// qgmpvf18h86e
	// qgmpvf
	// b3e75db828820cd5
	// -25.3454 131.036
	// {-25.345458984375 -25.345287322998047 131.03599548339844 131.03633880615234}
}

func ExampleEncode() {
	fmt.Println(geohash.Encode(48.858, 2.294))
	// Output: u09tunq6qp66
}

func ExampleEncodeInt() {
	fmt.Printf("%016x\n", geohash.EncodeInt(48.858, 2.294))
	// Output: d0139d52c6b54c69
}

func ExampleEncodeIntWithPrecision() {
	fmt.Printf("%08x\n", geohash.EncodeIntWithPrecision(48.858, 2.294, 32))
	// Output: d0139d52
}

func ExampleEncodeWithPrecision() {
	fmt.Println(geohash.EncodeWithPrecision(48.858, 2.294, 5))
	// Output: u09tu
}

func ExampleDecode() {
	lat, lng := geohash.Decode("u09tunq6")
	fmt.Printf("%.3f %.3f\n", lat, lng)
	// Output: 48.858 2.294
}

func ExampleDecodeInt() {
	lat, lng := geohash.DecodeInt(0xd0139d52c6b54c69)
	fmt.Printf("%.3f %.3f\n", lat, lng)
	// Output: 48.858 2.294
}

func ExampleDecodeIntWithPrecision() {
	lat, lng := geohash.DecodeIntWithPrecision(0xd013, uint(16))
	fmt.Printf("%.3f %.3f\n", lat, lng)
	// Output: 48.600 2.000
}