#Set to TRUE to run tests
if(FALSE){

library(network)

binet = network.initialize(10, bipartite = 6)
set.vertex.attribute(binet, 'myval', paste('b1', 1:6), v=1:6)
set.vertex.attribute(binet, 'myval', paste('b2', 1:4), v=7:10)

check <- vector()
check[1] <- all(get.vertex.attribute(binet, 'myval') == c("b1 1", "b1 2", "b1 3", "b1 4", "b1 5", "b1 6", "b2 1", "b2 2", "b2 3" ,"b2 4"))

# check for distinction between bipartite=FALSE and bipartite=0
testA<-network.initialize(3,bipartite=0)
if(!is.bipartite(testA)){
  stop('failed test of is.bipartite for bipartite=0')
}

testB<-network.initialize(3,bipartite=FALSE)
if(is.bipartite(testB)){
  stop('failed test of is.bipartite for bipartite=FALSE')
}

testC<-network.initialize(3,bipartite=TRUE)
if(!is.bipartite(testC)){
  stop('failed test of is.bipartite for bipartite=TRUE')
}

if(!is.bipartite(binet)){
  stop('failed test of is.bipartite for bipartite=6')
}

# add vertices to bipartite graphs
g = binet; add.vertices(g, 5, last.mode=F)
check[2] <- network.size(g) == 15
check[3] <- get.network.attribute(g, 'bipartite') == 11
check[4] <- identical(get.vertex.attribute(g, 'myval'),
  c("b1 1", "b1 2", "b1 3", "b1 4", "b1 5", "b1 6", NA,NA,NA,NA,NA,"b2 1","b2 2","b2 3","b2 4"))

test<-network.initialize(3,bipartite=0)
test%v%'letters'<-LETTERS[1:3]
add.vertices(test,nv=1,last.mode=FALSE)
if(!identical(test%v%'letters',c(NA,"A","B","C"))){
  stop("Error adding vertices to first mode of network with biparite=0")
}

test<-network.initialize(3,bipartite=0)
test%v%'letters'<-LETTERS[1:3]
add.vertices(test,nv=1,last.mode=TRUE)
if(!identical(test%v%'letters',c("A","B","C",NA))){
  stop("Error adding vertices to last mode of network with biparite=0")
}


g = binet
add.vertices(g, 5, last.mode=T)
check[5] <- network.size(g) == 15
check[6] <- get.network.attribute(g, 'bipartite') == 6
check[7] <- identical(get.vertex.attribute(g, 'myval'),
                  c("b1 1", "b1 2", "b1 3", "b1 4", "b1 5", "b1 6","b2 1","b2 2","b2 3","b2 4", NA,NA,NA,NA,NA))

# replacement operators should always replace
y <- network.initialize(4,dir=FALSE) # This network can have at most 1 edge.
y[1,2] <- NA # Assign NA to (1,2)
y[1,2] <- NA
check[8] <- network.edgecount(y) == 0
check[9] <- network.edgecount(y, na.omit=F) == 1

y[,] <- 1
check[10] <- network.edgecount(y) == 6
y[,] <- NA
check[11] <- network.edgecount(y) == 0
check[12] <- network.edgecount(y, na.omit=F) == 6
y[,] <- 0
check[13] <- network.edgecount(y, na.omit=F) == 0


# ------ test valid.eids function
net<-network.initialize(4)
net[,]<-1
delete.edges(net,eid=4:6)
if(!all(valid.eids(net)==c(1,2,3,7,8,9,10,11,12))){
  stop('valid.eids did not return correct ids for non-null elements of network')
}

#If everything worked, check is TRUE
if(!all(check)){                                               #Should be TRUE
  stop(paste("network package test failed on test(s):",which(!check)))
}

#End tests
}
