Problema: http://dojopuzzles.com/problemas/exibe/nomes-de-autores-de-obras-bibliograficas/
Created
June 12, 2012 00:46
-
-
Save bltavares/2913714 to your computer and use it in GitHub Desktop.
First Remote Spooning
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#encoding: utf-8 | |
import unittest | |
import re | |
class TestAutores(unittest.TestCase): | |
def test_recebe_nome_simples(self): | |
nome = "Manolo" | |
nome_correto = mostrar_nome(nome) | |
assert nome_correto == "MANOLO" | |
def test_recebe_nome_composto(self): | |
nome = "Bruno Lara" | |
nome_correto = mostrar_nome(nome) | |
assert nome_correto == "LARA, Bruno" | |
def test_recebe_nome_com_filho(self): | |
nome = "Mauricio Luiz Filho" | |
nome_correto = mostrar_nome(nome) | |
assert nome_correto == "LUIZ FILHO, Mauricio" | |
def test_recebe_nome_simples_com_filho(self): | |
nome = "Mauricio Filho" | |
nome_correto = mostrar_nome(nome) | |
assert nome_correto == "FILHO, Mauricio" | |
def test_recebe_nome_com_neto(self): | |
nome = "Mauricio Luiz Neto" | |
nome_correto = mostrar_nome(nome) | |
assert nome_correto == "LUIZ NETO, Mauricio" | |
def test_recebe_nome_com_sobrinho(self): | |
nome = "Mauricio Luiz Sobrinho" | |
nome_correto = mostrar_nome(nome) | |
assert nome_correto == "LUIZ SOBRINHO, Mauricio" | |
def test_recebe_nome_com_junior(self): | |
nome = "Mauricio Luiz Junior" | |
nome_correto = mostrar_nome(nome) | |
assert nome_correto == "LUIZ JUNIOR, Mauricio" | |
def test_recebe_nome_com_neta(self): | |
nome = "Maria Luiz Neta" | |
nome_correto = mostrar_nome(nome) | |
assert nome_correto == "LUIZ NETA, Maria" | |
def test_recebe_nome_com_filha(self): | |
nome = "Maria Luiz Filha" | |
nome_correto = mostrar_nome(nome) | |
assert nome_correto == "LUIZ FILHA, Maria" | |
def test_recebe_nome_com_sobrinha(self): | |
nome = "Maria Luiz Sobrinha" | |
nome_correto = mostrar_nome(nome) | |
assert nome_correto == "LUIZ SOBRINHA, Maria" | |
def test_recebe_nome_minusculo(self): | |
nome = "maria luiz sobrinha" | |
nome_correto = mostrar_nome(nome) | |
assert nome_correto == "LUIZ SOBRINHA, Maria" | |
def test_recebe_nome_minusculo(self): | |
nome = "glauco vinicius argentino de oliveira junior" | |
nome_correto = mostrar_nome(nome) | |
assert nome_correto == "OLIVEIRA JUNIOR, Glauco Vinicius Argentino de" | |
def test_recebe_nome_com_da(self): | |
nome = "joão da silva" | |
nome_correto = mostrar_nome(nome) | |
assert nome_correto == "SILVA, João da" | |
def test_recebe_nome_com_das(self): | |
nome = u"Maria das Graças" | |
nome_correto = mostrar_nome(nome) | |
assert nome_correto == u"GRAÇAS, Maria das" | |
def test_recebe_nome_com_dos(self): | |
nome = u"Maria dos Graças" | |
nome_correto = mostrar_nome(nome) | |
assert nome_correto == u"GRAÇAS, Maria dos" | |
def test_recebe_nome_com_do(self): | |
nome = u"Maria do Graças" | |
nome_correto = mostrar_nome(nome) | |
assert nome_correto == u"GRAÇAS, Maria do" | |
def test_recebe_nome_com_de(self): | |
nome = u"Maria de Graças" | |
nome_correto = mostrar_nome(nome) | |
assert nome_correto == u"GRAÇAS, Maria de" | |
def mostrar_nome(nome): | |
nomes_especiais = "(Filh[ao]|Net[ao]|Sobrinh[ao]|Junior)" | |
nomes = [capitalize(x) for x in nome.split(" ")] | |
if(len(nomes) == 1): | |
return nome.upper() | |
if(len(nomes) > 2 and re.match(nomes_especiais, nomes[-1])): | |
return nomes[-2].upper() + " " + nomes[-1].upper() + ", " + " ".join(nomes[0:-2]) | |
return nomes[-1].upper() + ", " + " ".join(nomes[0:-1]) | |
def capitalize(string): | |
if(re.match("d(a|as|os|o|e)", string)): | |
return string | |
return string[0].upper() + "".join(string[1:]).lower() | |
if __name__ == "__main__": | |
unittest.main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment