# Path: brew/cli/sugar.py
# def get_parser():
#     parser = argparse.ArgumentParser(description=u"Sugar Conversion")
#     parser.add_argument(
#         u"-b", u"--brix", metavar=u"B", type=float, help=u"Degrees Brix"
#     )
#     parser.add_argument(
#         u"-p", u"--plato", metavar=u"P", type=float, help=u"Degrees Plato"
#     )
#     parser.add_argument(
#         u"-s", u"--sg", metavar=u"S", type=float, help=u"Specific Gravity"
#     )
#     parser.add_argument(
#         u"-o",
#         u"--out",
#         metavar=u"O",
#         type=str,
#         help=u"Desired Output (b, p, s accepted)",
#     )
#     return parser
# 
# Path: brew/cli/sugar.py
# def get_sugar_conversion(brix_in, plato_in, sg_in, sugar_out):
#     """
#     Convert one sugar unit to another or print all.
# 
#     brix_in - Degrees Brix Input
#     plato_in - Degrees Plato Input
#     sg_in - Specific Gravity Input
#     sugar_out - Type of conversion ('b', 'p', 's', or None)
#     """
#     brix, plato, sg = 0.0, 0.0, 0.0
#     if brix_in:
#         brix = brix_in
#         plato = brix_to_plato(brix_in)
#         sg = brix_to_sg(brix_in)
#     elif plato_in:
#         brix = plato_to_brix(plato_in)
#         plato = plato_in
#         sg = plato_to_sg(plato_in)
#     elif sg_in:
#         brix = sg_to_brix(sg_in)
#         plato = sg_to_plato(sg_in)
#         sg = sg_in
# 
#     brix = round(brix, 1)
#     plato = round(plato, 1)
#     sg = round(sg, 3)
#     if sugar_out and sugar_out in [u"b", u"p", u"s"]:
#         if sugar_out == u"b":
#             return brix
#         elif sugar_out == u"p":
#             return plato
#         elif sugar_out == u"s":
#             return sg
#     else:
#         out = textwrap.dedent(
#             u"""\
#         SG\tPlato\tBrix
#         {:0.3f}\t{:0.1f}\t{:0.1f}""".format(
#                 sg, plato, brix
#             )
#         )
#         return out
# 
# Path: brew/cli/sugar.py
# def main(parser_fn=get_parser, parser_kwargs=None):
#     parser = None
#     if not parser_kwargs:
#         parser = parser_fn()
#     else:
#         parser = parser_fn(**parser_kwargs)
#     args = parser.parse_args()
# 
#     if sum(bool(arg) for arg in [args.brix, args.plato, args.sg]) != 1:
#         print(u"Must provide only one of Brix, Plato or Specific Gravity")
#         sys.exit(1)
#     print(get_sugar_conversion(args.brix, args.plato, args.sg, args.out))


import unittest
from brew.cli.sugar import get_parser
from brew.cli.sugar import get_sugar_conversion
from brew.cli.sugar import main
        expected = {u"brix": None, u"plato": None, u"sg": 1.060, u"out": None}
        self.assertEquals(out.__dict__, expected)

    def test_get_parser_sg_in_brix_out(self):
        args = [u"-s", u"1.060", u"-o", u"b"]
        out = self.parser.parse_args(args)
        expected = {u"brix": None, u"plato": None, u"sg": 1.060, u"out": u"b"}
        self.assertEquals(out.__dict__, expected)


class TestCliMainSugar(unittest.TestCase):
    def setUp(self):
        class Parser(object):
            def __init__(self, output):
                self.output = output

            def parse_args(self):
                class Args(object):
                    pass

                args = Args()
                if self.output:
                    for k, v in self.output.items():
                        setattr(args, k, v)
                return args

        def g_parser(output=None):
            return Parser(output)

        self.parser_fn = g_parser

# Path: brew/cli/sugar.py
# def get_parser():
#     parser = argparse.ArgumentParser(description=u"Sugar Conversion")
#     parser.add_argument(
#         u"-b", u"--brix", metavar=u"B", type=float, help=u"Degrees Brix"
#     )
#     parser.add_argument(
#         u"-p", u"--plato", metavar=u"P", type=float, help=u"Degrees Plato"
#     )
#     parser.add_argument(
#         u"-s", u"--sg", metavar=u"S", type=float, help=u"Specific Gravity"
#     )
#     parser.add_argument(
#         u"-o",
#         u"--out",
#         metavar=u"O",
#         type=str,
#         help=u"Desired Output (b, p, s accepted)",
#     )
#     return parser
# 
# Path: brew/cli/sugar.py
# def get_sugar_conversion(brix_in, plato_in, sg_in, sugar_out):
#     """
#     Convert one sugar unit to another or print all.
# 
#     brix_in - Degrees Brix Input
#     plato_in - Degrees Plato Input
#     sg_in - Specific Gravity Input
#     sugar_out - Type of conversion ('b', 'p', 's', or None)
#     """
#     brix, plato, sg = 0.0, 0.0, 0.0
#     if brix_in:
#         brix = brix_in
#         plato = brix_to_plato(brix_in)
#         sg = brix_to_sg(brix_in)
#     elif plato_in:
#         brix = plato_to_brix(plato_in)
#         plato = plato_in
#         sg = plato_to_sg(plato_in)
#     elif sg_in:
#         brix = sg_to_brix(sg_in)
#         plato = sg_to_plato(sg_in)
#         sg = sg_in
# 
#     brix = round(brix, 1)
#     plato = round(plato, 1)
#     sg = round(sg, 3)
#     if sugar_out and sugar_out in [u"b", u"p", u"s"]:
#         if sugar_out == u"b":
#             return brix
#         elif sugar_out == u"p":
#             return plato
#         elif sugar_out == u"s":
#             return sg
#     else:
#         out = textwrap.dedent(
#             u"""\
#         SG\tPlato\tBrix
#         {:0.3f}\t{:0.1f}\t{:0.1f}""".format(
#                 sg, plato, brix
#             )
#         )
#         return out
# 
# Path: brew/cli/sugar.py
# def main(parser_fn=get_parser, parser_kwargs=None):
#     parser = None
#     if not parser_kwargs:
#         parser = parser_fn()
#     else:
#         parser = parser_fn(**parser_kwargs)
#     args = parser.parse_args()
# 
#     if sum(bool(arg) for arg in [args.brix, args.plato, args.sg]) != 1:
#         print(u"Must provide only one of Brix, Plato or Specific Gravity")
#         sys.exit(1)
#     print(get_sugar_conversion(args.brix, args.plato, args.sg, args.out))


# Path: tests/test_cli_sugar.py
import unittest
from brew.cli.sugar import get_parser
from brew.cli.sugar import get_sugar_conversion
from brew.cli.sugar import main

        expected = {u"brix": None, u"plato": None, u"sg": 1.060, u"out": None}
        self.assertEquals(out.__dict__, expected)

    def test_get_parser_sg_in_brix_out(self):
        args = [u"-s", u"1.060", u"-o", u"b"]
        out = self.parser.parse_args(args)
        expected = {u"brix": None, u"plato": None, u"sg": 1.060, u"out": u"b"}
        self.assertEquals(out.__dict__, expected)


class TestCliMainSugar(unittest.TestCase):
    def setUp(self):
        class Parser(object):
            def __init__(self, output):
                self.output = output

            def parse_args(self):
                class Args(object):
                    pass

                args = Args()
                if self.output:
                    for k, v in self.output.items():
                        setattr(args, k, v)
                return args

        def g_parser(output=None):
            return Parser(output)

        self.parser_fn = g_parser

        self.main = main