Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions Package.swift
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,6 @@ import PackageDescription

let package = Package(
name: "XDataStructures",
platforms: [
.macOS(.v10_14), .iOS(.v13), .tvOS(.v13)
],
products: [
// Products define the executables and libraries a package produces, and make them visible to other packages.
.library(
Expand Down
33 changes: 33 additions & 0 deletions Sources/XDataStructures/Queue.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
//
// File.swift
//
//
// Created by BrainX Technologies IOS 4 on 25/02/2021.
//

import Foundation

public struct Queue<T> {

//MARK: List
fileprivate var items: [T] = []

//MARK: Initializers
public init(){}

//MARK: Methods
public func peek() -> T? {
return items.last
}

public mutating func enqueue(_ element: T) {
items.append(element)
}

public mutating func dequeue() -> T? {
guard let _ = items.last else {
return nil
}
return items.removeLast()
}
}
33 changes: 33 additions & 0 deletions Sources/XDataStructures/Stack.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
//
// File.swift
//
//
// Created by BrainX Technologies IOS 4 on 25/02/2021.
//

import Foundation

public struct Stack <T> {

//MARK: List
fileprivate var items: [T] = []

//MARK: Initializers
public init(){}

//MARK: Methods
public func peek() -> T? {
return items.first
}

public mutating func push(_ element: T) {
items.insert(element, at: 0)
}

public mutating func pop() -> T? {
guard let _ = items.first else {
return nil
}
return items.removeFirst()
}
}
34 changes: 34 additions & 0 deletions Tests/XDataStructuresTests/QueueTest/QueueTest.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
//
// QueueTest.swift
//
//
// Created by BrainX Technologies IOS 4 on 25/02/2021.
//

import XCTest
@testable import XDataStructures

class QueueTest: XCTest {

func testDequeueFromNonEmpty() {
var queue: Queue = Queue<Int>()
queue.enqueue(2)
XCTAssertNotNil(queue.dequeue())
}

func testPopFromEmpty() {
var queue: Queue = Queue<Int>()
XCTAssertNil(queue.dequeue())
}

func testPeakFromNonEmpty() {
var queue: Queue = Queue<Int>()
queue.enqueue(2)
XCTAssertNotNil(queue.dequeue())
}

func testPeakFromEmpty() {
var queue: Queue = Queue<Int>()
XCTAssertNil(queue.dequeue())
}
}
34 changes: 34 additions & 0 deletions Tests/XDataStructuresTests/StackTest/StackTest.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
//
// StackTest.swift
//
//
// Created by BrainX Technologies IOS 4 on 25/02/2021.
//

import XCTest
@testable import XDataStructures

class StackTest: XCTest {

func testPopFromNonEmpty() {
var stack: Stack = Stack<Int>()
stack.push(2)
XCTAssertNotNil(stack.pop())
}

func testPopFromEmpty() {
var stack: Stack = Stack<Int>()
XCTAssertNil(stack.pop())
}

func testPeakFromNonEmpty() {
var stack: Stack = Stack<Int>()
stack.push(2)
XCTAssertNotNil(stack.peek())
}

func testPeakFromEmpty() {
let stack: Stack = Stack<Int>()
XCTAssertNil(stack.peek())
}
}
3 changes: 2 additions & 1 deletion Tests/XDataStructuresTests/XCTestManifests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ import XCTest
#if !canImport(ObjectiveC)
public func allTests() -> [XCTestCaseEntry] {
return [
testCase(XDataStructuresTests.allTests),
testCase(XDataStructuresTests.StackTest),
testCase(XDataStructuresTests.QueueTest)
]
}
#endif