Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Artist +getSongs Colection findAlbums Co Mection +removeFromSong(song: Song)bool

ID: 3779222 • Letter: A

Question

Artist +getSongs Colection findAlbums Co Mection +removeFromSong(song: Song)boolean --addToSong(song: Song boolean +getName( String +equals (obj Object) boolean +hashCode0 int +toString(): String +findSongsWithNoAlbum0: Co ction Song +addArtist (artist:Artist):boolean +removeArtist (artist: Artist boolean +set Artists newArtists: Colection:void +setAlbum (album :Abum):boolean +getAlbum (XAlbum +get Title String +set Title title: String) void +get Artists(): Colection +get Duration(): long +set Duration duration:long) void +getLocation String +toString(): String +equals obj Object) boolean +hashCode0 int +compareTo(o: Song int +get Artist String 0:String +get TrackNum ber(): int Library +get Instance Librar +createSong (file File ititle:String,duration: long Song +createSong (file File ititle:String,duration: long,artist:String,album :StringitrackNum berint) Song +createSong (file File ititle:String,duration: long,artists Stringl], album: String itrackNum berintisong +createArtist(name: String): Artist +createAlbum title String Album +getSong(path: String) Song +getAlbum title String:Album +getArtist name String) Artist +rename Artist a Artist nevName: String) Woid +renameAlbum (a: Album inewTitle:String void +getAlbumlterator 0: iterator +getArtistlterator0: Itera tor +getSonglterator(): Itera tor +getAlbums(): Co ction +get Artists(): Coiection +getSongs Colection +get Num Songs( int +getNum Artists int +getNumAlbums0: int --containsSong(path: String) boolean --containsArtistilname: String boolean +containsAlbum title: String): boolean +removeSong(song Song) void +removeArtist (artist: Artist) void +removeAlbum (album Album): void +getDefaultAbum 0: Album +print 0: void Album +getSongs Colection +toString(0: String +get Title String --equals (obj: Object) boolean +hashCode0 int +compareTo(o Album) int +addSong(song: Song boolean +addSong song song trackNum ber: int) boolean +set Track Number (song:Song,newTrackNumber int boolean

Explanation / Answer

Please find below the python code for the above UML:

import musictest //importing
import sys
import os
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
from yamusic.app import cursor, Search, Artist, Album, Track
from itertools import islice


class CursorTestCase(musictest.TestCase): //class is declared here
def setUp(own):
own.artists = (
'notfoundableartist',
'royksopp', 'liars', 'portishead'
)
own.not_fount_artist = own.artists[0]
own.albums = (
'notofoundableshitalbum',
'junior', 'jade motel',
)
own.not_found_album = own.albums[0]
own.tracks = (
'song 2', 'paranoid android', 'castle'
)

def test_artist(own): //defining a test artist
for artist in own.artists:
artist_list = list(
islice(cursor.search(Search.TYPE_ARTISTS, artist), 1)
)
if artist == own.not_fount_artist:
own.assertEqual(
len(artist_list), 0,
'Not found not working!'
)
else:
own.assertEqual(
len(artist_list), 1,
'Search artist not working!'
)
artist_obj = artist_list[0]
albums = list(artist_obj.get_albums())
own.assertEqual(
len(albums) > 0, True,
'get_album not working!'
)
for album in albums:
tracks = list(album.get_tracks())
own.assertEqual(
len(tracks) > 0, True,
'get_tracks from album not working!'
)

def test_albums(own): //defining a test albums
for album in own.albums:
album_list = list(
islice(cursor.search(Search.TYPE_ALBUMS, album), 1)
)
if album == own.not_found_album:
own.assertEqual(
len(album_list), 0,
'Not found not working!'
)
else:
own.assertEqual(
len(album_list), 1,
'Search album not working!'
)
album_obj = album_list[0]
tracks = list(album_obj.get_tracks())
own.assertEqual(
len(tracks) > 0, True,
'get_tracks from album not working!'
)

def test_tracks(own): //defining a test tracks
for track in own.tracks:
track = cursor.search(Search.TYPE_TRACKS, track, single=True)
own.assertEqual(
len(track.title) > 0, True,
'Track search not working!'
)
own.assertEqual(
len(track.open().read(200)), 200,
'Track downloading not working!'
)


class ORMTestCase(musictest.TestCase): // class ORMTestCase
def setUp(own):
own.artists = (
'notfoundableartist',
'royksopp', 'liars', 'portishead'
)
own.not_fount_artist = own.artists[0]
own.albums = (
'notofoundableshitalbum',
'junior', 'jade motel',
)
own.not_found_album = own.albums[0]
own.tracks = (
'song 2', 'paranoid android', 'castle'
)

def test_artist(own):
for artist in own.artists:
artist_list = Artist.objects.filter(title=artist).all()[0:1]
if artist == own.not_fount_artist:
own.assertEqual(
len(artist_list), 0,
'Not found not working!'
)
else:
own.assertEqual(
len(artist_list), 1,
'Search artist not working!'
)
artist_obj = artist_list[0]
albums = list(artist_obj.get_albums())
own.assertEqual(
len(albums) > 0, True,
'get_album not working!'
)
for album in albums:
tracks = list(album.get_tracks())
own.assertEqual(
len(tracks) > 0, True,
'get_tracks from album not working!'
)
own.assertEqual(Artist.objects.get(id=24463).title, 'Archive')

def test_albums(own):
for album in own.albums:
album_list = Album.objects.filter(title=album).all()[0:1]
if album == own.not_found_album:
own.assertEqual(
len(album_list), 0,
'Not found not working!'
)
else:
own.assertEqual(
len(album_list), 1,
'Search album not working!'
)
album_obj = album_list[0]
tracks = list(album_obj.get_tracks())
own.assertEqual(
len(tracks) > 0, True,
'get_tracks from album not working!'
)
own.assertEqual(Album.objects.get(id=298323).title, 'I am the Best')

def test_tracks(own):
for track in own.tracks:
track = Track.objects.get(title=track)
own.assertEqual(
len(track.title) > 0, True,
'Track search not working!'
)
own.assertEqual(
len(track.open().read(200)), 200,
'Track downloading not working!'
)
own.assertEqual(Track.objects.get(id=1675302, album__id=166649).title, 'Carol')

if __name__ == '__main__':
musictest.main()

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote